我想知道如何在以下场景中使用反射机制:
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,那么如何更深入地反思?
答案 0 :(得分:1)
如果你想获得实现某个接口的类,在你的情况下它是ICollection<B>
,你可以使用以下使用Reflection的GetInterfaces()
方法的代码:
var container = new Container();
var found = container.GetType().GetProperties().FirstOrDefault(x => x.PropertyType.GetInterfaces().Contains(typeof(ICollection<B>)));