2008-09-19 13 views

cevap

11

Belirli bir arabirimi uygulayıp uygulamadığınızı görmek istiyorsanız, ya da bir sorun olup olmadığını görmek istiyorsanız, GetInterface(), IsAssignableFrom() öğesinin GetInterface() öğesinden daha fazla iç denetim gerçekleştirdiğinden daha hızlıdır. Muhtemelen diğer yöntemlerin her ikisinin de kullandığı aynı iç listeyi döndüren Type.GetInterfaces() sonuçlarının kontrol edilmesi daha da hızlı olacaktır.

1

İç sınıfların nasıl ele alınacağı konusunda bir fark var.

var types = typeof(IFoo).Assembly.GetTypes() 
      .Where(x => x.IsAssignableFrom(typeof(IFoo)) 
      .ToList(); 
:

bu Oysa
var types = typeof(IFoo).Assembly.GetTypes() 
      .Where(x => x.GetInterface(typeof(IFoo).FullName) != null) 
      .ToList(); 

size boş bir liste verecektir:

public interface IFoo 
{ 
}  

internal class Foo: IFoo 
{ 
} 

Bu, bir öğenin bir listesini verecektir: Aşağıdaki sınıfını atın

İlgili konular