1 回答
TA贡献1797条经验 获得超6个赞
考虑到可能有多个属性,GetChildTypeOf返回List<Type>对象越好。
private static List<Type> GetChildTypeOf(Type parent)
{
var res = new List<Type>();
var props = parent.GetProperties();
foreach (var prop in props)
{
var propType = prop.PropertyType;
var elementType = propType.GetElementType();
res.Add(elementType);
}
return res;
}
然后你做出你的断言:
var childType = GetChildTypeOf(typeof(ParentClass));
Assert.True(childType.First() == typeof(ChildClass));
也许如果有一种方法可以返回所有这些元素,并且有一种方法可以通过给定的属性名称返回子类型元素,那就更好了。
编辑:以下是查找特定属性名称的方式:
private static Type GetSpecificChildTypeOf(Type parent, string propertyName)
{
var propType = typeof(ParentClass).GetProperty(propertyName).PropertyType;
var elementType = propType.GetElementType();
return elementType;
}
并像这样使用它:
var childType = GetSpecificChildTypeOf(typeof(ParentClass), "Children");
Assert.True(childType == typeof(ChildClass))
编辑:感谢您标记答案!
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报