2009-07-01 25 views
6

私はこのようなプロパティ値を持つ複数のクラスがあります。私は、プロパティの値を設定するMethodInfo.Invoke()を使用したいMethodInfo.Invokeを使用してプロパティ値を設定する方法

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

を。

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? 

私は現在自分の仕事VSにアクセスできません。私の質問は23などの整数値でValueを設定する方法ですか?

+0

使用PropertyInfo.SetValue、後述するように。 MethodInfoオブジェクトの使用が制限されていることが判明した場合は、プロパティの「取得」メソッド(PropertyInfo.GetGetMethod())を取得し、上記のように呼び出します。 –

答えて

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ではない –

+0

うん、タイポが修正されました... – CMS

0

これは、PropertyInfoクラスを使用して、System.Reflection名前空間から行うことができます。

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}); 
関連する問題