我試着去獲得從PropertyInfo[]
的價值,但我不能得到它的工作:獲得的PropertyInfo價值
foreach (var propertyInfo in foo.GetType().GetProperties())
{
var value = propertyInfo.GetValue(this, null);
}
例外:Object does not match target type.
心不是這怎麼它應該做些什麼呢?
我試着去獲得從PropertyInfo[]
的價值,但我不能得到它的工作:獲得的PropertyInfo價值
foreach (var propertyInfo in foo.GetType().GetProperties())
{
var value = propertyInfo.GetValue(this, null);
}
例外:Object does not match target type.
心不是這怎麼它應該做些什麼呢?
當您最初從foo.GetType()
獲取PropertyInfo
時,您正試圖從this
獲取屬性。因此,這將是比較合適的:
var value = propertyInfo.GetValue(foo, null);
這是假設你想有效地得到foo.SomeProperty
等
@Johan:不,它指的是你在上下文中的任何對象,就像正常一樣......'propertyInfo'引用循環中的每個'propertyInfo'。 – 2012-01-31 14:38:44
你得到異常,因爲this
是不一樣的類型foo
。
你應該確定你正在獲取你將嘗試從中獲取值的同一對象的屬性。我從你的代碼,你希望這是循環的範圍內FOO(這是不是在所有的情況)猜測,所以你需要的那一行更改爲:
var value = propertyInfo.GetValue(foo, null);
您正在處理foo
類型中聲明的屬性,但嘗試從this
中讀取它們的值,該值顯然不是同一類型。
'this'和'foo'是什麼類型? – BNL 2012-01-31 14:30:12
'this'是否包含'propertyInfo'所代表的屬性? – 2012-01-31 14:30:22