Bir derlemem var ve belirli bir sınıf/arabirimden devralan tüm sınıfları listelemek istiyorum.Belirli bir sınıf/arabirimden gelen tüm sınıfları listele
Bunu nasıl yaparım?
Bir derlemem var ve belirli bir sınıf/arabirimden devralan tüm sınıfları listelemek istiyorum.Belirli bir sınıf/arabirimden gelen tüm sınıfları listele
Bunu nasıl yaparım?
şey gibi: basit vaka için iyi, ama daha "ilginç" olur
public static IEnumerable<Type> GetSubtypes(Assembly assembly, Type parent)
{
return assembly.GetTypes()
.Where(type => parent.IsAssignableFrom(type));
}
(okuyun: zor) vb
"herhangiT
için
IEnumerable<T>
uygulayan her türlü" bulmak istediğinizde
(Adam'ın dediği gibi, bunu bir uzantı yöntemini kolayca yapabilirsiniz. Yeniden kullanacağınızı düşünüp düşünmediğinize bağlıdır. Uzantı yöntemlerinin yuvalanmamış bir statik sınıfta olması gereken bir acıdır ...)
public static IEnumerable<Type> GetTypesThatInheritFrom<T>(this Assembly asm)
{
var types = from t in asm.GetTypes()
where typeof(T).IsAssignableFrom(t)
select t;
return types;
}
Her zamanki gibi Skeeted'i aldım. Aynı zamanda bir uzatma yöntemi de yapabilir. –
@Jon, Herhangi bir T "vb" için IEnumerable'u uygulayan her tür "bulmak istediğinizde" nasıl yapardınız? Ayrıca "uzatma yöntemlerinin yuvalanmamış bir statik sınıfta olması gereken bir acı" dendiniz. Niye ya? Yuvalanmış sınıfları sık sık kullanıyor musunuz? Teşekkürler. –
@Joan: Bir * belirli * 'IEnumerable' veya * herhangi bir * 'IEnumerable ' (yani T belirtilmiş mi değil mi?) Bir uygulama bulup bulmadığını bilmek gerekir. Pek çok üst düzey statik sınıf yazma eğiliminde değil. Sadece uzatma yöntemleri için bir tane oluşturmak biraz fazladır. aşağıdaki gibi :) –