我們有一個類型爲long?
的屬性,該屬性被填充爲int
。通過反射設置屬性時的類型轉換問題
這工作得很好,當我剛剛設置的屬性直接obj.Value = v;
但是當我嘗試並設置通過反射info.SetValue(obj, v, null);
屬性它給了我以下異常:
類型的對象「System.Int32」不能轉換爲類型'System.Nullable`1 [System.Int64]'。
這是一個簡化的情景:
class TestClass
{
public long? Value { get; set; }
}
[TestMethod]
public void TestMethod2()
{
TestClass obj = new TestClass();
Type t = obj.GetType();
PropertyInfo info = t.GetProperty("Value");
int v = 1;
// This works
obj.Value = v;
// This does not work
info.SetValue(obj, v, null);
}
爲什麼通過reflection
設置屬性時,而它直接設置屬性時,它不工作?
優秀的答案! – series0ne
對不起,延誤了你的代碼示例。這個伎倆,謝謝! – Shikyo
設置'null'時不起作用。這很容易解決,試圖編輯你的文章,但被拒絕。 – Shikyo