21 Ağustos 2016 Pazar

C# da dll Oluşturma ve Kullanma

Dynamic Linking Library olarak adlandırılan ve en kısa tanımı ile uygulamalarımızın kullandığı kütüphane dosyalarının barındırıldığı dosya yapısıdır.

Bize Faydası Nedir?
Esasında biz dll leri istesek de, istemesek de C# kullanıyoruz. Fakat bunlar hazır yazılmış dll ler oluyor. Peki kendi dll mizi yazmanın bize ne gibi faydası olacak? Sorunun cevabı çok basit cok kod yazmaktan kurtulmak ve projenin gereğinden fazla şişmesini engellemek.

Basit bir örnek vermek gerekse “MessageBox.Show” bunu cok sık kullanmışızdır. Yazdığımızda mesaj kutusu çıkar. Fakat biz böyle bir şey eklemeyiz projemize, çünkü Sytem.Windows.Forms namespace i içinde yer almaktadır. Bu namespace ler bir dll dosyası içinde tanımlanmıştır.

Bir Dll Oluşturalım
VisualStduio nun açılış ekranın da Create Project e tıkladıktan sonra genelde Console Application veya Windows Application a tıklamışızdır. Fakat bu sefer Class Library e tıklıyoruz.

Şimdi örnek olarak bir MD5 oluşturucu Dll yazalım.
Önce Project->Add Reference->.NET->System.Web i referans olarak ekliyoruz. Bu eklediğimiz referans sayesince string bir değişkeni md5 haline getirebiliriz.

İkinci adım olarak aşağıdaki kodları ekleyin:
namespace MD5Olustur
{
    public class Hash
    {
        private string hash;
        public string Cevir(string pass)
        {
            this.hash = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "md5");
            return hash;
        }
    }
}

bunları yazıp çalıştırdığınızda uyarı gibi bir şey alacaksınız. Bu projenizin derlendiği anlamına gelmektedir. \\\\bin\\\\Debug içinde .dll niz oluşmuş olacak.

burada;
Hash Sınıfımızın adı
Cevir Metodumuzun adı dır.
Bir Dll yi Kullanma

Yeni bir proje açıyoruz (Windows Application …) bu sefer projemize az önce oluşturduğumuz dll dosyamızı referans olarak ekliyoruz.
Project->Add Reference->Browse->[oluşturduğumuz Dll nin klasörüne gidiyoruz] Dll mizi seçiyoruz.
NameSpace olarak ise using Dllmizin_adi;
Örnek: using MD5Olustur;
Dll mizin içindeki class ları kullanmak için:
Classımızın_Adı nesnemizin adı=new Classımızın adı();
Örnek : Hash md5 = new Hash();

String bir değeri dll miz sayesinde md5 yapmak için:
yenihash = md5.Cevir(textBox2.Text);
eskihash = md5.Cevir(textBox1.Text);

Peki Dll miz Olmasaydı Bunu Nasıl Yapardık
Önce Projemize Dll mize eklediğimiz gibi System.Web Referansını eklerdik.
Sonra:
pass=Convert.ToString(textBox1.Text);
eskihash=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "md5");
Peki başka bir Proje de yine MD5 cevirmeye gerek duyulursa… o zaman yine System.Web referansını ekleyip her çevirme için yukardaki satırı yazacağız yada oluşturduğumuz dll yi kullanıp kendi oluşturduğumuz şekilde yapacağız.

MD5Olustur.dll mizin linki:

bu resimde de kendi dll mizle olusturdugumuz bir program ile klasik yontem arasındaki farkı görebilirsiniz