私は次のコードを持っています:
FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
私がやろうとしているのは、リフレクションを使用して、実行時に現在インスタンス化されているインスタンスのプロパティの1つの値を取得することです。これどうやってするの?
私は次のコードを持っています:
FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
私がやろうとしているのは、リフレクションを使用して、実行時に現在インスタンス化されているインスタンスのプロパティの1つの値を取得することです。これどうやってするの?
このようなものが機能するはずです:
var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);
GetPropertiesメソッドを試してください。フィールドではなく、プロパティが取得されます。
値を取得するには、次のようにします。
object foo = ...;
object propertyValue = foo.GetType().GetProperty("PropertyName").GetValue(foo, null);
これはGetPropertyを使用しており、それらの配列ではなく、1つのPropertyInfoオブジェクトのみを返します。次に、GetValueを呼び出します。これは、値を取得するオブジェクトのパラメーターを取ります(PropertyInfoは、インスタンスではなく、タイプに固有です)。GetValueの2番目のパラメーターは、インデックスプロパティ用のインデクサーの配列であり、関心のあるプロパティはインデックス付きプロパティではないと想定しています。(インデックス付きプロパティはlist[14]
、リストの14番目の要素を取得するために実行できるものです。)