SORU
12 AĞUSTOS 2009, ÇARŞAMBA


Belirli bir Türü C Devralan bir derlemede tüm türlerini bulmak için nasıl#

Nasıl belirli başka bir türünden devralan tüm türleri bir koleksiyon alabilirim?

CEVAP
12 AĞUSTOS 2009, ÇARŞAMBA


Gibi bir şey

public IEnumerable<Type> FindDerivedTypes(Assembly assembly, Type baseType)
{
    return assembly.GetTypes().Where(t => baseType.IsAssignableFrom(t));
}

Eğer jenerik işlemek gerekiyorsa, bu biraz yanıltıcıdır (örneğin açık List<> yazın geçen ama List<int> türetilen bir tür geri almak için bekliyor) alır. Aksi halde basit :)

Eğer türünü kendisi hariç tutmak istiyorsanız, bunu kolayca yapabilirsiniz:

public IEnumerable<Type> FindDerivedTypes(Assembly assembly, Type baseType)
{
    return assembly.GetTypes().Where(t => t != baseType && 
                                          baseType.IsAssignableFrom(t));
}

Bu aynı zamanda bir arabirim belirlemek ve uygulamak olan tüm türlerini bulmak, sadece Type.IsSubclassOf gibi sınıflar ile çalışma yerine izin verir unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008
  • snookie77

    snookie77

    2 Mart 2006
  • The Amazing Atheist

    The Amazing

    20 Kasım 2006