39

私は次のコードを持っています:

FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

私がやろうとしているのは、リフレクションを使用して、実行時に現在インスタンス化されているインスタンスのプロパティの1つの値を取得することです。これどうやってするの?

4

2 に答える 2

89

このようなものが機能するはずです:

var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);
于 2012-04-26T17:05:25.493 に答える
22

GetPropertiesメソッドを試してください。フィールドではなく、プロパティが取得されます。

値を取得するには、次のようにします。

object foo = ...;
object propertyValue = foo.GetType().GetProperty("PropertyName").GetValue(foo, null);

これはGetPropertyを使用しており、それらの配列ではなく、1つのPropertyInfoオブジェクトのみを返します。次に、GetValueを呼び出します。これは、値を取得するオブジェクトのパラメーターを取ります(PropertyInfoは、インスタンスではなく、タイプに固有です)。GetValueの2番目のパラメーターは、インデックスプロパティ用のインデクサーの配列であり、関心のあるプロパティはインデックス付きプロパティではないと想定しています。(インデックス付きプロパティはlist[14]、リストの14番目の要素を取得するために実行できるものです。)

于 2012-04-26T17:03:12.260 に答える