通過反思,有沒有什麼方法可以讓我查看通用List的包含類型,以查看該集合的類型?例如:通過反思獲取包含在列表<T>中的類型?
我有一組簡單的業務對象,從一個接口派生,就像這樣:
public interface IEntityBase{}
public class BusinessEntity : IEntityBase
{
public IList<string> SomeStrings {get; set;}
public IList<ChildBusinessEntity> ChildEntities { get; set;}
}
public class ChildBusinessEntity : IEntityBase{}
在我經過的BusinessEntity的通過反射特性迭代的情況下,會有一個我的方式來看看是否嵌套在從IEntityBase派生的列表內的對象?
僞編碼(嚴重)是這樣的:
foreach(PropertyInfo info in typeof(BusinessEntity).GetProperties())
{
if(info.PropertyType is GenericIList &&
TheNestedTypeInThisList.IsAssignableFrom(IEntityBase)
{
return true;
}
}
唯一的選擇,我至今聽到的,這樣的作品,將是從該列表中拉出來的第一個項目,然後看它的類型。任何更簡單的方法(特別是因爲我不能保證List不會是空的)?
杜佩:http://stackoverflow.com/questions/528546/type-getinterface-and-nested-types – 2009-02-11 18:34:21