通过反思,有什么方法让我看一下通用List的包含类型,看看该集合的类型是什么?例如:
我有一组简单的业务对象,它们来自一个接口,如下所示:
public interface IEntityBase{} public class BusinessEntity : IEntityBase { public IListSomeStrings {get; set;} public IList 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不会为空)?
假设您有System.Type
描述的内容List<>
,您可以使用该Type.GetGenericArguments()
方法获取Type
描述其列表的实例.