2009-07-01 123 views
6

我有這樣的屬性值類:如何使用MethodInfo.Invoke設置屬性值?

public class MyClass { 
    public property var Value { get; set; } 
    .... 
} 

我想用MethodInfo.Invoke()設置屬性值。以下是一些代碼:

object o; 
// use CodeDom to get instance of a dynamically built MyClass to o, codes omitted 
Type type = o.GetType(); 
MethodInfo mi = type.GetProperty("Value"); 
mi.Invoke(o, new object[] {23}); // Set Value to 23? 

我現在無法訪問我的工作。我的問題是如何設置一個整數值,如23值?

+0

使用PropertyInfo.SetValue,如下所述。如果您發現您受限於使用MethodInfo對象,請獲取該屬性的「get」方法(PropertyInfo.GetGetMethod()),並如上所述調用它。 – 2009-07-01 06:06:39

回答

13

您可以使用PropertyInfo.SetValue方法。

object o; 
//... 
Type type = o.GetType(); 
PropertyInfo pi = type.GetProperty("Value"); 
pi.SetValue(o, 23, null); 
+0

實際上它應該是:pi.SetValue(o,23,null); ?不是0 – 2009-07-01 05:03:27

2

如果您正在使用的.NET Framework 4.6和4.5,你也可以使用PropertyInfo.SetMethod Property

object o; 
//... 
Type type = o.GetType(); 
PropertyInfo pi = type.GetProperty("Value"); 
pi.SetMethod.Invoke(o, new object[] {23});