30 Eylül 2010 Perşembe

C#’ta anahtar kelimeyi değişken ismi olarak kullanma

Google Kitaplar‘da, şuradan bulabileceğiniz .Net CLR Unleashed kitabından edindiğim bir bilgiyi paylaşmak istiyorum.
CLS (Common Language Specification), CLS-Uyumlu tüm dillerin, anahtar kelimelerin değişken ismi olarak kullanabilmesini sağlayacak bir mekanizma sunmasını ister.
C# dili için bu mekanizma, anahtar kelimenin başına gelen @ işareti ile sağlanır.
@ işareti kullanılarak, şunlar yapılabilir;
1int @int = 8;
2Console.WriteLine("integer değişken : {0}", @int);
1bool @bool = true;
2Console.WriteLine("boolean değişken : {0}", @bool);
Bu sayede, anahtar kelime olan “int”, değişken ismi olarak kullanılabildi.
Kaynak : MSDN: C# Keywords, MSDN: CLS, MSDN: What is CLS, Amazon: NET CLR Unleashed 
http://www.enginpolat.com/csharp-anahtar-kelimeyi-degisken-ismi-olarak-kullanma/

29 Eylül 2010 Çarşamba

Java Virtual Machine'nin Başladığı Zamanı Nasıl Alabilirim?

package test.example.lang.management;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.Date;

public class GetStartTime {
    public static void main(String[] args) {
        RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();

        long startTime = bean.getStartTime();
        Date startDate = new Date(startTime);       
        System.out.println("Start Time = " + startTime);
        System.out.println("Start Date = " + startDate);
    }
}

Javascript ve Regular Expressions

Bu yazımda javascript ile regular expression kullanımından bahsedeceğim. Regular expression ile herhangi bir değeri kontrol edip, bu değerin belirlediğimiz formata uygun olup olmadığını veya bu değerin belirlediğimiz formata dönüşmesini sağlayabiliriz. Visual Studio ile bu kontrolü validation bölümündeki kontroller ile rahatlıkla yapabiliriz. Ancak bu kontrolü kendimiz javascript ile de yapabiliriz. Böylece yaptığımız uygulamaya daha da hakim oluruz.

Ben bu konuda basit bir örnek yaptım ve sayfada bulunan bir textbox değerini alıp bu değeri regular expression ile kontrol edip belirli formatlara uyup uymadığını kontrol ettim. Bu formatlar ise; email formatı, sadece rakam formatı ve sadece metin formatı. Bunların dışında ihtiyaç duyduğumuz formatları belirleyip konrol edebiliriz. Mesela textbox değerinden html formatta bilgi alacaksak bu değerdeki html tagların neler olacağını bu yöntemle belirleyebiliriz. Dediğim bu uygulama birçok blogda yorum ekleme bölümünde kullanılıyor.

Verdiğim örneğin kodlarına bakacak olursak:

         function kontrol_et()
        {
            // kontrol edeceğimiz değeri bir textboxtan alıyoruz.
            var deger = document.getElementById("Text1").value;
            // kontrollerimizi yapıyoruz.
           
            if((/^[0-9_.@ \"']+$/).test(deger) == true)
            {
                alert("Rakam Girdiniz.");
            }
            else if((/^[a-zA-Z_.@ \"']+$/).test(deger) == true)
            {
                alert("Metin Girdiniz.");
            }
            else if((/^[S+@\S+\.\S+]+$/).test(deger) == true)
            {
                alert("Email girdiniz");
            }
        }

Görüldüğü gibi bu kodar ile girilen değerin rakam mı, metin mi veya email formatın da mı olduğunu kontrol ediyorum. İhtiyacınıza göre format belirleyip bu şekilde kullanarak kullanıcıların kontrolleri doğru ve hatasız şekilde kullanmasını sağlayabiliriz.
İyi Çalışmalar!

28 Eylül 2010 Salı

Create, Build, Run,Test and Debug codes online with CodeRun Studio

Visual Studio olmayan bir bilgisayardasınız acil bir şekilde elinizdeki yada zihninizde oluşturmuş olduğunuz kodları derlemeniz gerekiyor sharpdevelop aracını indireceğiniz vaktiniz de yok diyelim o zaman hemen http://coderun.com/ adresine girip Ekranda kocaman olarak beliren Start the IDE yi tıklayıp karşımıza gelen

bu ekrandan ister kodlarımızı saklamak için kayıt olarak işlemlerimizi yaparız istersek de kayıt olmadan o anda kodlarımızı derleyip derlenen dll yada exe mizi alabiliriz.

Hadi Kolay Gelsin Iyi Kodlamalar...

27 Eylül 2010 Pazartesi

Asp.Net Olay Tetikleme

Bir tane asp sayfam var ve içinde asp.net Login kontrolü var. Kullanıcı adı ve şifre yazıldıktan sonra klavyeden “Enter” tuşuna basıldığı zaman Login kontorlündeki LoginButton_Click olayının çalıştırılmasını istiyorum.

C# kodunun içine gömülü bir JavaScript ile bu meseleyi çözebiliriz:

this.Page.Form.Attributes.Add(
    "onKeyPress",
    "javascript:if (event.keyCode == 13)
    __doPostBack('" +Login1.FindControl("LoginButton").UniqueID + "','')");




İşimize yarar görüşündeyim..

23 Eylül 2010 Perşembe

Visual Studio Solution Explorer Collapse-Uncollapse

büyük çaplı projelerde uğraşıyorsanız ve Solution Explorer sekmenizde her projede örneğin arattırma yaptığınız zaman yada bir cs yada aspx dosyasından diğerine baktığınız zaman o projelerin hepsinin açık kalmasından hazzetmiyorsanız yada hepsini açıp hepsini birden kapatmak istiyorsanız size iki tane macro veriyorum umarım işinize yarar.

Collapse:

Imports System
Imports EnvDTE
Imports System.Diagnostics

Public Module Collapse
    Sub CollapseAll()
        ' Get the the Solution Explorer tree
        Dim UIHSolutionExplorer As UIHierarchy
        UIHSolutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
        ' Check if there is any open solution
        If (UIHSolutionExplorer.UIHierarchyItems.Count = 0) Then
            ' MsgBox("Nothing to collapse. You must have an open solution.")
            Return
        End If
        ' Get the top node (the name of the solution)
        Dim UIHSolutionRootNode As UIHierarchyItem
        UIHSolutionRootNode = UIHSolutionExplorer.UIHierarchyItems.Item(1)
        UIHSolutionRootNode.DTE.SuppressUI = True
        ' Collapse each project node
        Dim UIHItem As UIHierarchyItem
        For Each UIHItem In UIHSolutionRootNode.UIHierarchyItems
            'UIHItem.UIHierarchyItems.Expanded = False
            If UIHItem.UIHierarchyItems.Expanded Then
                Collapse(UIHItem)
            End If
        Next
        ' Select the solution node, or else when you click
        ' on the solution window
        ' scrollbar, it will synchronize the open document
        ' with the tree and pop
        ' out the corresponding node which is probably not what you want.
        UIHSolutionRootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
        UIHSolutionRootNode.DTE.SuppressUI = False
    End Sub

    Private Sub Collapse(ByVal item As UIHierarchyItem)
        For Each eitem As UIHierarchyItem In item.UIHierarchyItems
            If eitem.UIHierarchyItems.Expanded AndAlso eitem.UIHierarchyItems.Count > 0 Then
                Collapse(eitem)
            End If
        Next
        item.UIHierarchyItems.Expanded = False
    End Sub
End Module

UNCOLLAPSE:

Imports System
Imports EnvDTE
Imports System.Diagnostics

Public Module UnCollapse
    Sub UnCollapseAll()
        ' Get the the Solution Explorer tree
        Dim UIHSolutionExplorer As UIHierarchy
        UIHSolutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
        ' Check if there is any open solution
        If (UIHSolutionExplorer.UIHierarchyItems.Count = 0) Then
            ' MsgBox("Nothing to collapse. You must have an open solution.")
            Return
        End If
        ' Get the top node (the name of the solution)
        Dim UIHSolutionRootNode As UIHierarchyItem
        UIHSolutionRootNode = UIHSolutionExplorer.UIHierarchyItems.Item(1)
        UIHSolutionRootNode.DTE.SuppressUI = True
        ' Collapse each project node
        Dim UIHItem As UIHierarchyItem
        For Each UIHItem In UIHSolutionRootNode.UIHierarchyItems
            UIHItem.UIHierarchyItems.Expanded = True
            'If UIHItem.UIHierarchyItems.Expanded Then
            '    UnCollapse(UIHItem)
            'End If
        Next
        ' Select the solution node, or else when you click
        ' on the solution window
        ' scrollbar, it will synchronize the open document
        ' with the tree and pop
        ' out the corresponding node which is probably not what you want.
        UIHSolutionRootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
        UIHSolutionRootNode.DTE.SuppressUI = False
    End Sub

    Private Sub UnCollapse(ByVal item As UIHierarchyItem)
        For Each eitem As UIHierarchyItem In item.UIHierarchyItems
            If eitem.UIHierarchyItems.Expanded AndAlso eitem.UIHierarchyItems.Count > 0 Then
                UnCollapse(eitem)
            End If
        Next
        item.UIHierarchyItems.Expanded = True
    End Sub
End Module
Burada iki tane macro örneği var şimdi diyeceksiniz ben bunları ne yapıcam da senin dediklerini yapacağım aynen şöyle olacak;

Collapse kod örneğini kopyalayıp Visul Studio-Tools-Macros-Macro IDE yi tıklayıp açılan ayrı bir ekranda MyMacros  un üzerine sağ tıklayıp Add module Deyip Module in adını Collapse koyup yeni bir module ekleyip kopyaladığınız collapse kod örneğini yapıştırıp kayıt ediyoruz aynı şekilde UnCollapse e aynı işlemleri yapıyoruz ekranları kapadıktan sonra;

Tools-Customize ı tıklayıp Toolbars sekmesine gelip New  butonuna tıklayıp Mesela MyMacros diye yeni bir toolbar yaratıyoruz.Daha sonra yanındaki check işaretini işaretliyoruz close diyoruz visual studio ide sinde mymacros diye yarattığımız toolbar görünüyor daha sonra tekrar aynı yere yani tools-customize e gelip commands sekmesinden macrosdan eklemiş olduğumuz MyMacros.Collapse.CollapseAll ve MyMacros.UnCollapse.UnCollapseAll u eklemiş olduğumuz toolbara doğru sürüklüyoruz daha sonrada bol projeli olan bir solution dosyası açıp denememizi yapıyoruz.
hadi hayırlı olsun =)

22 Eylül 2010 Çarşamba

Java(Text Dosyası Nasıl Yazılır)

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.File;
import java.io.Writer;
import java.io.FileNotFoundException;
import java.io.IOException;

public class WriteTextFileExample
{
    public static void main(String[] args)
    {
        Writer writer = null;

        try
        {
            String text = "Dosyaya eklenecek yazı";

            File file = new File("write.txt");
            writer = new BufferedWriter(new FileWriter(file));
            writer.write(text);
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        } finally
        {
            try
            {
                if (writer != null)
                {
                    writer.close();
                }
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}

Java(Text Dosyası Nasıl Okunur)

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ReadTextFileExample
{
    public static void main(String[] args)
    {
        File file = new File("test.txt");
        StringBuffer contents = new StringBuffer();
        BufferedReader reader = null;

        try
        {
            reader = new BufferedReader(new FileReader(file));
            String text = null;

            // repeat until all lines is read
            while ((text = reader.readLine()) != null)
            {
                contents.append(text)
                    .append(System.getProperty(
                        "line.separator"));
            }
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        } finally
        {
            try
            {
                if (reader != null)
                {
                    reader.close();
                }
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
       
        // show file contents here
        System.out.println(contents.toString());
    }
}

Configuration Files Reading & Writing

Öncelikle bir config dosyasından yaratılan section lardan okuma ve yazmayı bilinen bir şekilde yani şöyle;


Configuration conf =
 new Configuration(new System.IO.StreamReader("Configuration.ini"));
string UserName = conf.GetValue("User");
string HomePage = conf.GetValue("Internet_Data","Home_Page");

conf.SetValue( "User_Information", 
               "Log_In_Time",
               System.DateTime.Now.ToString()); 
 
gibi fakat aşağıda göreceğiniz kodlarla yazılacak ve yaratılacak library;
 
Tek fark bu kodu hızlı ve konfigürasyon dosyası kullanılmış olabileceği 
için veya değiştirilmiş sürecinde daha önce başka bir uygulama tarafından 
uzun süre bellekte saklanamaz. Yani, aşağıdaki kodu sadece sırayla dosyayı 
okur ve, o bölüm ya da anahtarı bulur, harekete geçmiş ve daha sonra orada 
kendisi dosyayı kapatır.Bu işlemin dezavantajı her işlev çağrısında 
bu dosya açılır ve veya değiştirmeden kapatılır. Bu kodlama kapalı olduğu 
için yapılandırma dosyası tamamlandıktan sonra fonksiyon birkaç kez 
değişiklikleri yansıtabilir.

aşağıdaki kodu bir class library yaratarak dll haline getirip istediğimiz platformda
kullanabiliriz.

using System;
using System.IO;
using System.Collections.Specialized;

namespace ReadWriteConfigFile
{
    public class Config
    {
        public static void SetIniString
(string sFile, string Sec,string Key, string Val)
        {
            StreamReader sr = null;
            string newLineChars = "\r\n";   

            if (true)
            {
                StringWriter tw = new StringWriter();
                newLineChars = tw.NewLine;
            }

            string slines = null;
            if (File.Exists(sFile))
            {
                bool reWrite = false;
                using (sr = new StreamReader(sFile))
                {
                    String line;
                    bool foundSection = false;
                    while ((line = sr.ReadLine()) != null)
                    {
                        line = line.Trim();
                        if (line.Length > 1)
                        {
                            if (line[0] == '[')
                            {
                                int end = line.IndexOf("]");
                                if (end != -1)
                                {
                                    string section = line.Substring(1,
                                                                    end - 1);
                                    if (String.Compare(section, Sec, true) == 0)
                                    {
                                        foundSection = true;
                                        slines += line + newLineChars;
                                        continue;
                                    }
                                    else
                                    {
                                        if (foundSection == true)
                                        {

                                            slines += Key + "=" + Val
                                                          + newLineChars; ;
                                            slines += line + newLineChars;
                                            line = sr.ReadToEnd();
                                            slines += line;
                                            reWrite = true;
                                            break;
                                        }
                                    }
                                }
                            }
                            if (foundSection == true)
                            {
                                string[] pair = line.Split('=');
                                if (pair.Length > 1)
                                {
                                    if (String.Compare(pair[0], Key, true)
                                              == 0)
                                    {
                                        line = Key + "=" + Val
                                                         + newLineChars;
                                        slines += line;
                                        line = sr.ReadToEnd();
                                        slines += line;
                                        reWrite = true;
                                        break;
                                    }
                                }
                            }
                        }
                        slines += line + newLineChars;
                    }
                    if (foundSection == false)
                    {
                        slines += "[" + Sec + "]" + newLineChars;
                        slines += Key + "=" + Val + newLineChars;
                        reWrite = true;
                    }
                    if (foundSection == true && reWrite == false)
                    {
                        slines += Key + "=" + Val + newLineChars;
                        reWrite = true;
                    }
                }
                if (reWrite == true)
                {
                    using (StreamWriter sw = new StreamWriter(sFile))
                    {
                        sw.Write(slines);
                    }
                }
            }
            else
            {
                slines = "[" + Sec + "]" + newLineChars;
                slines += Key + "=" + Val + newLineChars;
                using (StreamWriter sw = new StreamWriter(sFile))
                {
                    sw.Write(slines);
                }

            }
        }

        public static string GetIniString(string sFile, string Sec,string Key, string Val)
        {
            StreamReader sr = null;
            if (File.Exists(sFile))
            {
                using (sr = new StreamReader(sFile))
                {
                    String line;
                    bool foundSection = false;
                    while ((line = sr.ReadLine()) != null)
                    {
                        line = line.Trim();
                        if (line.Length > 1)
                        {
                            if (line[0] == '[')
                            {
                                int end = line.IndexOf("]");
                                if (end != -1)
                                {
                                    string section = line.Substring(1,
                                                                    end - 1);
                                    if (String.Compare(section, Sec, true)
                                       == 0)
                                    {
                                        foundSection = true;
                                        continue;
                                    }
                                    else
                                        foundSection = false;
                                }
                            }
                            if (foundSection == true)
                            {
                                string[] pair = line.Split('=');
                                if (pair.Length > 1)
                                {
                                    if (String.Compare(pair[0], Key, true)
                                        == 0)
                                    {
                                        Val = pair[1];
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return Val;
        }
        
        public static StringCollection GetSections(string sFile)
        {
            StreamReader sr = null;
            StringCollection myAL = new StringCollection();
            if (File.Exists(sFile))
            {

                using (sr = new StreamReader(sFile))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        line = line.Trim();
                        if (line.Length > 1)
                        {
                            if (line[0] == '[')
                            {
                                int end = line.IndexOf("]");
                                if (end != -1)
                                {
                                    string section = line.Substring(1,
                                                                    end - 1);
                                    myAL.Add(section);
                                }
                            }
                        }
                    }
                }
            }
            return myAL;
        }

        public static StringCollection GetSectionKeys(string sFile,string Sec)
        {
            StreamReader sr = null;
            StringCollection myAL = new StringCollection();
            if (File.Exists(sFile))
            {
                using (sr = new StreamReader(sFile))
                {
                    String line;
                    bool foundSection = false;
                    while ((line = sr.ReadLine()) != null)
                    {line = line.Trim();
                        if (line.Length > 1)
                        {
                            if (line[0] == '[')
                            {
                                int end = line.IndexOf("]");
                                if (end != -1)
                                {
                                    string section = line.Substring(1,
                                                                    end - 1);
                                    if (String.Compare(section, Sec, true)
                                       == 0)
                                    {
                                        foundSection = true;
                                        continue;
                                    }
                                    else
                                    {
                                        if (foundSection == true)
                                        {
                                            break;
                                        }
                                        foundSection = false;
                                    }
                                }
                            }
                            if (foundSection == true)
                            {
                                string[] pair = line.Split('=');
                                if (pair.Length > 1)
                                {
                                    myAL.Add(pair[0]);
                                }
                            }
                        }
                    }
                }
            }
            return myAL;
        }
    }
}

                        

Solution Recent Clean

Beni sinir eden şey bir durumdu bu visual studio ide sini açtıktan sonra karşıma onca yığınla daha önce açmış olduğum silinmiş olanlar gelmesi hiç hoşuma gitmiyordu ufak bir araştırma sonucu şöyle bir library yazdım;


using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
using System.IO;

namespace RecentClear
{
    public enum IdeVersion
    {
        IDE90,
        IDE10
    }
    public class Recent
    {
        private IdeVersion versionSelect = IdeVersion.IDE90;

        public Recent(IdeVersion setVersion)
        {
            versionSelect = setVersion;
        }

        public bool clear()
        {
            bool status = false;
            RegistryKey key = Registry.CurrentUser.CreateSubKey(GetVersion(versionSelect));
            string[] list = key.GetValueNames();
            try
            {
                foreach (string k in list)
                {
                    if (IsFileSolution(key.GetValue(k).ToString()))
                        key.DeleteValue(k);
                }
                status = true;
            }
            catch
            {
                status = false;
            }
            if (list.Length == 0)
                status = true;
            return status;
        }
        private bool IsFileSolution(string filePath)
        {
            bool status = false;
            try
            {
                FileInfo file = new FileInfo(filePath);
                if (file.Extension == ".sln" || file.Extension == ".csproj")
                    status = true;
                else
                    status = false;
            }
            catch
            {
                if (filePath.Contains("vdproj") || filePath.Contains(".sln") || filePath.Contains(".csproj"))
                    status = true;
                else
                    status = false;
            }
            return status;
        }

        private string GetVersion(IdeVersion versionSelect)
        {
            string version = @"Software\Microsoft\VisualStudio\";
            switch (versionSelect)
            {
                case IdeVersion.IDE90:
                    version += "9.0";
                    break;
                case IdeVersion.IDE10:
                    version += "10.0";
                    break;
            }
            version += "\\ProjectMRUList";
            return version;
        }
    }
}

Burada gördüyseniz eğer önemli olan kıstaslar regedit teki adres satırları ve bu oluşturulacak dll hem 2008 de hemde 2010 da güzel bir şekilde çalışıyor örnek olarak bir application yapalım;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RecentClear;

namespace SolutionClean
{
    class Program
    {
        static void Main(string[] args)
        {
            RecentClear.Recent ide = new Recent(IdeVersion.IDE90);
            if (ide.clear())
            {
                Console.WriteLine("Proje Listesi Temizlendi");
                Console.ReadLine();
            }
           
            else
            {
                Console.WriteLine("Proje Listesi Temizlenemedi");
                Console.ReadLine();
            }
           
        }
    }
}
Bir Console application yada artık size kalmış windows application da olabilir yaratıp önceden yaratmış olduğumuz dll imizi projemize reference ediyoruz ve sonrası zaten bilen arkadaşlar için kolay...

Extensions Methods

//Şifreleme yapmak için kullanılacak method

        public static string Encrypted(this string stringToEncrypt, string key)
        {
            try
            {
                if (string.IsNullOrEmpty(stringToEncrypt))
                    throw new ArgumentException("Bos Metin Sifrelenemez");

                if (string.IsNullOrEmpty(key))
                    throw new ArgumentException("Sifreleme Icin Anahtar Vermelisiniz");

                CspParameters cspp = new CspParameters();
                cspp.KeyContainerName = key;

                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspp);
                rsa.PersistKeyInCsp = true;

                byte[] bytes = rsa.Encrypt(UTF8Encoding.UTF8.GetBytes(stringToEncrypt), true);

                return BitConverter.ToString(bytes);
            }
            catch (Exception)
            {

                throw new ArgumentException("Hata Olustu");
            }

        }
Örnek:
        /// string metin = "My Secret";
        /// string sifrelenmis = metin.Encrypt("sifreleyici");
        /// string sifresicozulmus = sifrelenmis.Decrypt("sifreleyici");

// Deşifreleme yapmak için kullanılacak method

public static string Decrypt(this string stringToDecrypt, string key)
        {
            if (string.IsNullOrEmpty(stringToDecrypt))
                throw new ArgumentException("Bos Olan Metnin Sifresi Cozulemez");

            if (string.IsNullOrEmpty(key))
                throw new ArgumentException("Sifre Cozme Icin Anahtar Vermelisiniz");

            string result = null;
            try
            {
                CspParameters cspp = new CspParameters();
                cspp.KeyContainerName = key;

                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspp);
                rsa.PersistKeyInCsp = true;

                string[] decryptArray = stringToDecrypt.Split('-');
                byte[] decryptByteArray = Array.ConvertAll<string, byte>(decryptArray, (s => Convert.ToByte(byte.Parse(s, NumberStyles.HexNumber))));
                byte[] bytes = rsa.Decrypt(decryptByteArray, true);

                result = UTF8Encoding.UTF8.GetString(bytes);
            }
            catch (Exception)
            {

                throw new ArgumentException("Hata Olustu");
            }
            return result;
        }
Örnek:
        /// string metin = "My Secret";
        /// string sifrelenmis = metin.Encrypt("sifreleyici");
        /// string sifresicozulmus = sifrelenmis.Decrypt("sifreleyici");

// Listeler üzerinde Foreach Yapan Extension Method

public static void ForEach<T>(this IEnumerable<T> kaynak, Action<T> islem)
        {
            foreach (var item in kaynak)
                islem(item);
        }


Örnek:
        // List<string> isimler = new List<string> { "ali", "veli", "kirk", "dokuz", "elli" };
        // isimler.ForEach(isim => MessageBox.Show(isim));


// İnternet Adresi Doğrulayan Extension Method

 public static bool IsValidUrl(this string text)
        {
            Regex r = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
            return r.IsMatch(text);
        }

 Örnek:
        // string Adres = "http://www.ega.com.tr";
        //    bool AdresDogru = Adres.IsValidUrl();

//Email Adresi Doğrulayan Extension Method

public static bool IsValidEmail(this string text)
        {
            Regex r = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
            return r.IsMatch(text);
        }

Örnek:
        // string adres="test@test.com";
        // bool AdresDogru=adres.IsValidEmail();

// Klasör Oluşturan Extension Method

public static void CreateDirectory(this DirectoryInfo dirInfo)
        {
            if (dirInfo.Parent != null)
                CreateDirectory(dirInfo.Parent);
            if (!dirInfo.Exists)
                dirInfo.Create();
        }

Örnek:
        // var dir=new DirectoryInfo(@"C:\temp\bir\iki\uc);
        // dir.CreateDirectory();

// Tarihin Haftasonuna Geldiğini Doğrulayan Extension Method

        public static bool IsWeekend(this DateTime value)
        {
            return (value.DayOfWeek == DayOfWeek.Sunday || value.DayOfWeek == DayOfWeek.Saturday);
        }

Örnek:
        // for(DateTime date=BaslangicTarih; date<= BitisTarih; date.AddDays(1))
        // {
        // if(date.IsWeekend())
        // continue;

// Tarihten Yaş Hesaplayan Extension Method

        public static int Age(this DateTime tarih)
        {
            DateTime now = DateTime.Now;
            int yas = now.Year - tarih.Year;
            if (now < tarih.AddYears(yas))
                yas--;
            return yas;
        }

Örnek:
        //    DateTime FatihDogumGunu = new DateTime(1979, 05, 07);
        //    int Yas = FatihDogumGunu.Age();

// Ayın İlk Gününü Bulan Extension Method

        public static DateTime FirstDayOfMonth(this DateTime date)
        {
            return new DateTime(date.Year, date.Month, 1);
        }

Örnek:
        // DateTime Simdi = DateTime.Now;
        // MessageBox.Show("Ayın ilk günü: " + Simdi.FirstDayOfMonth().ToShortDateString());

// Ayın Son Gününü Bulan Extension Method

        public static DateTime LastDayOfMonth(this DateTime date)
        {
            return new DateTime(DateTime.Now.Year, DateTime.Now.Month,1).AddMonths(1).AddDays(-1);
        }

Örnek:
        // DateTime Simdi= DateTime.Now;
        // MessageBox.Show("Ayın son günü: " + Simdi.LastDayOfMonth().ToShortDateString());

// Dosyanın MD5 Değerini Hesaplayan Extension Method

        public static string GetMD5(this string filename)
        {
            string result = string.Empty;

            try
            {
                MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
                FileStream fileStream = new FileStream(filename, FileMode.Open,                            FileAccess.Read,FileShare.ReadWrite);
                byte[] arrByteHashValue = md5Provider.ComputeHash(fileStream);
                fileStream.Close();

                string hashData = BitConverter.ToString(arrByteHashValue).Replace("-", "");
                result = hashData;
            }
            catch
            {
            }
            return result.ToLower();
        }

Örnek:
        // string Dosya = @"C:\Temp\DosyaAdi.txt";
        // MessageBox.Show(Dosya + " dosyasının MD5 değeri: " + Dosya.GetMD5());

Kaynak: http://www.enginpolat.com/