C#reflection find属性哪种类型继承了其他类型

时间:2017-08-11 09:26:31

标签: c# reflection

我想知道如何在以下场景中使用反射机制:

public class A { }
public class B { }

public class ListA : ICollection<A> { }

public class ListB : ICollection<B> { }

public class Container
{
    public ListA LA { get; set; }
    public ListB LB { get; set; }
}

然后我想找到一个属性,该类型继承了类型ICollection<B>

var container = new Container();

var found = container.GetType().GetProperties().FirstOrDefault(x => x.PropertyType == typeof(ICollection<B>));

当然found变量为null,那么如何更深入地反思?

1 个答案:

答案 0 :(得分:1)

如果你想获得实现某个接口的类,在你的情况下它是ICollection<B>,你可以使用以下使用Reflection的GetInterfaces()方法的代码:

var container = new Container();

var found = container.GetType().GetProperties().FirstOrDefault(x => x.PropertyType.GetInterfaces().Contains(typeof(ICollection<B>)));