c#反射-从PropertyInfo获取属性列表
所以,正如标题所说,我有一个对象,它是propertyInfo。我想得到的是那笔财产,但我似乎找不到办法 首先我有这个方法:c#反射-从PropertyInfo获取属性列表,c#,.net,reflection,C#,.net,Reflection,所以,正如标题所说,我有一个对象,它是propertyInfo。我想得到的是那笔财产,但我似乎找不到办法 首先我有这个方法: public object GetPropertyInfo(object parent, String propertyName) { object propInf = null; PropertyInfo[] propList = parent.GetType().GetProperties(); foreac
public object GetPropertyInfo(object parent, String propertyName)
{
object propInf = null;
PropertyInfo[] propList = parent.GetType().GetProperties();
foreach (PropertyInfo pInf in propList)
{
if (propertyName == pInf.Name)
{
propInf = pInf;
}
}
return propInf;
}
假设提供的“parent”对象是一个常规类而不是反射类型,那么它工作得相当好
但返回的某些属性本身包含我要访问的属性。在这些情况下,我需要将PropertyInfo反馈回这个方法,并为属性获取另一个PropertyInfo。但是如果我在这个方法中放入一个PropertyInfo对象,它只会返回一个PropertyInfo的属性列表(正如您所想象的)
我已经读过了,似乎我想要的是PropertyInfo类的“GetValue”方法。不过我有点不确定,因为我似乎无法解析该方法所需的内容
尽管如此,我还是这样写的:
public object GetPropertyInfo(object parent, String propertyName)
{
object propInf = null;
object o = null;
if (parent is PropertyInfo)
{
PropertyInfo p = (parent as PropertyInfo);
o = p.GetValue(p, null);
}
else
o = parent;
PropertyInfo[] propList = o.GetType().GetProperties();
foreach (PropertyInfo pInf in propList)
{
if (propertyName == pInf.Name)
{
propInf = pInf;
}
}
return propInf;
}
显然,我希望第二个能起作用。它通过'if'语句fine,确认它是PropertyInfo类型,但下一部分提供了一个异常,如下所示:
TargetException:对象与目标类型不匹配
也许我在使用“GetValue”时犯了一个错误,因为我对它不太熟悉,但如果我可以在不指定类型的情况下使用它,那就太好了。假设我理解您的意图: 表示类的属性,而不知道正在检查其属性的类的实例 方法可以为给定实例提供属性的值
object value = somePropertyInfo.GetValue(someInstance);
// where someInstance is of the type which has someProperty's represented property.
如果需要当前正在检查的属性的
类型的属性
,可以使用PropertyInfo.PropertyType.GetProperties()
但这只会获取属性的类型的属性,而不是它所包含的具体(可能是派生的)类型的属性。假设我理解您的意图:
表示类的属性,而不知道正在检查其属性的类的实例
方法可以为给定实例提供属性的值
object value = somePropertyInfo.GetValue(someInstance);
// where someInstance is of the type which has someProperty's represented property.
如果需要当前正在检查的属性的类型的属性
,可以使用PropertyInfo.PropertyType.GetProperties()
但这只会得到属性的类型的属性,而不是它所包含的具体(可能是派生的)类型的属性。你在这方面帮了我很大的忙。非常感谢!你在这里帮了我不少忙。非常感谢!