MEF’in(Managed Extensibility Framework) geliştirmesi devam eden 2.0 sürümünün Preview 4’ü yayınlandı. Diğer Preview’lara nazaran büyük yenilikler içeren bu yeni sürümü, MEF ile ciddi anlamda uğraşan kişilere tavsiye ederim. İndirmek için bu adrese gitmeniz yeterli.

Kısaca benim neler en çok hoşuma gitti onlardan bahsetmek isterim, belki daha cazip gelir bu haber bu sayede (:

Benim en çok hoşuma giden yenilik MEF Part’larını belirtmek için kullandığımız attribute’ları yeni gelen RegistrationBuilder ile sayesinde farklı bir şekilde belirtebiliyor olmamız. Mesela belli bir sınıfta belirtilen Part’larımızdan türüyen export edilecek diğer sınıflarımız için [Export] attribute’unu tanımlamak gerekmekteydi. Hem kendini tekrarlayan bir yapı oluşmasıns sebep olan hem de bazen unutulabilen ve  runtime’da fark edilebilen bir durum oluyordu. Yeni gelen RegistrationBuilder ile aşağıdaki gibi Export edilecek Part’larımı daha kolay ve anlaşılır bir şekilde tanımlayabiliyoruz.

 //ForTypesDerivedFrom() metodu ile BaseModule gibi kendi sınıfımızdan
 //türümiş tüm objelerin export edilebileceğini söylüyoruz.
 var builder = new RegistrationBuilder();
 builder.ForTypesDerivedFrom().Export();

//MEF kataloglarına da RegistrationBuilder objemizi verebiliyoruz
 var catalog = new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly(), builder);
 

Generic olan sınıfları artık Export edebiliyoruz. Yani IGenericType<T> gibi bir arayüzümüz olduğunda ve bundan türeyen sınıflarımızı Export etmek istediğimiz de [Export(IGenericType<>)] şeklinde attribute’u güncellemek yeterli olacak.

Ayrıca Exception mesajlarında ki iyileştirmeler de Run-time’da alınan hataları biraz daha açıklayıcı hala getiriyor. Bu da hata tespiti için çok can kurtaracak.

Bu arada MEF 2.0 versiyonu, .NET Framework 4.5’ün içinde de geliyor olacak. Ama tabi ondan önce çıkar mı bilemiyorum…Çıkarsa ne ala…Neyse şimdilik bu kadar…