当前位置:  开发笔记 > 编程语言 > 正文

通过反射获取List <T>中的包含类型?

如何解决《通过反射获取List<T>中的包含类型?》经验,为你挑选了1个好方法。

通过反思,有什么方法让我看一下通用List的包含类型,看看该集合的类型是什么?例如:

我有一组简单的业务对象,它们来自一个接口,如下所示:

public interface IEntityBase{}  

public class BusinessEntity : IEntityBase   
{
    public IList SomeStrings {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不会为空)?



1> ChrisW..:

假设您有System.Type描述的内容List<>,您可以使用该Type.GetGenericArguments()方法获取Type描述其列表的实例.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有