22 Eylül 2010 Çarşamba

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/

Hiç yorum yok:

Yorum Gönder