因此,如標題所示,我有一個屬性是propertyInfo。我想要得到的是財產,但我似乎無法找到辦法去做。c#反射 - 從PropertyInfo獲取屬性列表
首先我有這個方法:
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;
}
而且它工作得相當好,假定所提供的「父」對象是一個普通的類,而不是反射型。
但是,返回的一些屬性本身包含我想要訪問的屬性。在這些情況下,我需要將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'語句正確,承認它是一個PropertyInfo類型,但接下來的部分提供了以下異常:
TargetException:Object與目標類型不匹配。
也許我對'GetValue'犯了一個錯誤,因爲我不完全熟悉它,但是如果我可以在不指定類型的情況下做到這一點,那就太棒了。
你在這裏已經幫了我很多老運動。非常感謝! – TheFaithfulLearner