Reflection ve Dinamik Assembly’ler

   Yazdığım bir uygulamada; uygulamada yüklü assembly’lerin listesini alarak bunlar içerisinde belirli bir attribute’a sahip olanlar üzerinde işlem yapmak istiyordum. Bunun içinde assembly’lerin listesini aldıktan sonra aşağıdaki kodu yazmıştım :

foreach (System.Reflection.Assembly assembly in System.AppDomain.CurrentDomain.GetAssemblies()) {
    //Assembly ile ilgili analizi gerçekleştir
}

    Fakat bu kodu çalıştırdığım zaman System.NotSupportedException hatasını alıyordum. Biraz araştırmanın ardından bunun sebebinin kullandığım 3. parti kütüphanelerden birinin dinamik olarak bir assembly oluşturarak bunu mevcut domain’e eklemesi olduğunu anladım. Dinamik olarak oluşturulan bu assembly’leri anlamak için ise aşağıdaki kod işinizi görecektir :

if (assembly is System.Reflection.Emit.AssemblyBuilder) {
   continue;
}

Bu sayede elinizde bulunan assembly’nin dinamik olup olmadığını anlayarak analiz işlemini bu assembly için es geçebilirsiniz.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir