如何获取另一个对象的对象类型';C#中的s属性?
假设我们有以下两个类的定义:如何获取另一个对象的对象类型';C#中的s属性?,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,假设我们有以下两个类的定义: 公共类父类 { 公共子类[]子类{get;set;} } 公营儿童班 { 公共int Id{get;set;} } 我们可以使用System.Type迭代ParentClass的属性,但是我在dotnetcore中找不到一种方法来确定Children的非数组类型,即ChildClass。例如,我想让下面这样的测试始终通过: Type childType=GetChildTypeOf(typeof(ParentClass)); True(childType==typ
公共类父类
{
公共子类[]子类{get;set;}
}
公营儿童班
{
公共int Id{get;set;}
}
我们可以使用System.Type
迭代ParentClass
的属性,但是我在dotnetcore中找不到一种方法来确定Children
的非数组类型,即ChildClass
。例如,我想让下面这样的测试始终通过:
Type childType=GetChildTypeOf(typeof(ParentClass));
True(childType==typeof(ChildClass));
在这种情况下,应该如何实现
GetChildTypeOf(…)
。考虑到可能有多个属性,GetChildTypeOf
更好地返回列表
对象
private静态列表GetChildTypeOf(父类型)
{
var res=新列表();
var props=parent.GetProperties();
foreach(道具中的var道具)
{
var propType=prop.PropertyType;
var elementType=propType.GetElementType();
res.Add(elementType);
}
返回res;
}
然后你提出你的主张:
var childType=GetChildTypeOf(typeof(ParentClass));
Assert.True(childType.First()==typeof(ChildClass));
也许最好有一个方法来返回它们,还有一个方法通过给定的属性名返回子类型元素
编辑:以下是它应该如何查找特定属性名称:
private静态类型GetSpecificChildTypeOf(类型parent,字符串propertyName)
{
var propType=typeof(ParentClass).GetProperty(propertyName).PropertyType;
var elementType=propType.GetElementType();
返回元素类型;
}
然后像这样使用它:
var childType=GetSpecificChildTypeOf(typeof(ParentClass),“Children”);
Assert.True(childType==typeof(ChildClass))
编辑:谢谢你批改答案 考虑到可能有多个属性,
GetChildTypeOf
更好地返回列表
对象
private静态列表GetChildTypeOf(父类型)
{
var res=新列表();
var props=parent.GetProperties();
foreach(道具中的var道具)
{
var propType=prop.PropertyType;
var elementType=propType.GetElementType();
res.Add(elementType);
}
返回res;
}
然后你提出你的主张:
var childType=GetChildTypeOf(typeof(ParentClass));
Assert.True(childType.First()==typeof(ChildClass));
也许最好有一个方法来返回它们,还有一个方法通过给定的属性名返回子类型元素
编辑:以下是它应该如何查找特定属性名称:
private静态类型GetSpecificChildTypeOf(类型parent,字符串propertyName)
{
var propType=typeof(ParentClass).GetProperty(propertyName).PropertyType;
var elementType=propType.GetElementType();
返回元素类型;
}
然后像这样使用它:
var childType=GetSpecificChildTypeOf(typeof(ParentClass),“Children”);
Assert.True(childType==typeof(ChildClass))
编辑:谢谢你批改答案 你已经试过什么了?请用您当前正在使用的代码编辑您的问题,并且遇到问题。我正在寻找一种通用的方法来实现这一目标。这两个类只是表达我想法的一个例子。如果这个类有多个属性呢?那你认为哪个是“孩子”呢?你试着实现<代码> GED HealType Obj/<代码>吗?您提到您有代码迭代父类的属性,但是您能在问题中说明这一点吗?您已经尝试了什么?请用您当前正在使用的代码编辑您的问题,并且遇到问题。我正在寻找一种通用的方法来实现这一目标。这两个类只是表达我想法的一个例子。如果这个类有多个属性呢?那你认为哪个是“孩子”呢?你试着实现<代码> GED HealType Obj/<代码>吗?您提到您有代码迭代父类的属性,但您能在问题中说明这一点吗?这个答案展示了我一直在寻找的更通用的解决方案。这个答案展示了我一直在寻找的更通用的解决方案。