我有一个包含List<T>
. 其中一些属性,T 属于从 Class 继承的 Class,例如 Foo。
public class Foo {}
public class MyTypeA : Foo {}
public class MyTypeB : Foo {}
// Not : Foo
public class MyTypeC {}
public class Bar
{
// I can Match these
public MyTypeA PropA { get; set; }
public MyTypeB PropB { get; set; }
// How can I match these based on IsSubclassOf(Foo)
public List<MyTypeA> PropListA { get; set; }
public List<MyTypeB> PropListB { get; set; }
// Do not match the props below
public MyTypeC PropC { get; set; }
public List<MyTypeC> PropListC { get; set; }
public List<string> PropListString { get; set; }
}
我已经成功匹配了Foo
如下所示的子类属性。
foreach (var oProp in T.GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
// Find Prop : Foo
if( oProp.PropertyType.IsSubclassOf( typeof(Foo) ) )
{
// Add Property to dictionary
aPropInheritType.Add(
oProp.Name,
oProp
);
}
// Match List<T> where T : Foo
// How do I test for Generic List that's Type T is a subclass
// of the class Foo ?
}
我看到有许多类型类的通用属性,但无法获取通用列表的类型,然后针对 IsSubclassOf(Foo) 进行测试。