Çalışma Zamanında Class,Property, Module ve Assembly Üretmek

Merhaba Arkadaşlar,

Şöyle bir senaryo düşünelim; Bir Excel dosyasında yer alan sayfa ve kolon bilgilerini programatik ortamda ifade etmek istiyoruz. Ancak Excel dosyası oldukça büyük. Sheet ve kolon sayıları çok fazla. Bir şekilde dosyayı okumayı, kolon adlarını, içeriklerini ve veri tiplerini öğrenmeyi başarıyoruz. Her bir Sheet' in bir sınıfa karşılık gelmesi gerektiğini fark ediyoruz. Ama işin zor olan kısmı şemaya uygun şekilde sınıf ve özelliklerinin programatik ortamda üretilmesi. Aklımıza gelen bir kaç yol var fakat biz en şık olanlarından birisini tercih ediyoruz. Sınıfları(Class), özelliklerini(Property) ve bu tiplerin bulunduğu Assembly’ ı içeren sınıf kütüphanesini(Class Library) kod ile üretiyoruz. Üretme işini gerçekleştirirken Intermediate Language’ e kadar da uzanıyoruz. Merak ediyor musunuz? Winking smile

DynamicAssembly.rar (31,37 kb)

Yorumlar (2) -

  • Son zamanlar bakmam gereken bir konu olarak düşünüyordum. Ben düşünürken siz yapmışsınız hocam. Kullanmasını bilene güzel şeyler çıkartır Smile
  • ILGenerator ve ...Builder yapılarını bilmiyordum. IL kodunu direkt olarak üretebildiğimizi de öğrenmek güzel oldu. Mutlaka bu durumla karşılaşırız diye düşünüyorum. Genel de DLL üretiminde kullandığım "CSharpCodeProvider" oluyordu. "CSharpCodeProvider" 'ın gözünü sevesim geldi Smile Biraz daha rahat gibi IL kodu üretmektense, C# kodu üretip onu derleme yapmak. Tabii ki araya bir de C#kodu üretme işlemi sokmanın performans etkileri var. İkiside benim için birbirinin alternatifi olacak yapılar olarak zihin kütüphaneme bu güzel videonuzu ve içindeki bilgileri kaydettim. İyi çalışmalar diliyorum..

Yorum ekle

Loading