2

ここで C# リフレクションを使用しています: プロパティの FieldInfo があり、それが属するクラスのインスタンスを取得したい (別のプロパティのコンテンツにアクセスできるようにするため):

たとえば、次のクラスを取り上げます。

class MyClass
{
   public int A { get; set; }
   public int B { get; set; }
}

私が持っているコードの一部で

void Function(FieldInfo fieldInfoOfA)
{
  // here I need to find the value of B
}

これは可能ですか?

4

2 に答える 2

3

これは可能ですか?

いいえ。リフレクションは、型のメタデータの検出に関するものです。には、その型の特定のインスタンスに関するFieldInfo情報は含まれていません。FieldInfoこれが、型のインスタンスをまったく作成しなくても取得できる理由です。

typeof(MyClass).GetField(...)

上記のスニペットを見るとFieldInfo、特定のインスタンスに依存せずに a を取得できることがわかります。

于 2016-02-16T20:14:58.687 に答える
2

FieldInfoクラス内のフィールドのメタデータへのアクセスを提供します。これは、指定されたインスタンスから独立しています。

のインスタンスがある場合、MyClassこれを行うことができます:

object Function(MyClass obj, FieldInfo fieldInfoOfA)
{
    var declaringType = fieldInfoOfA.DeclaringType;

    var fieldInfoOfB = declaringType.GetField("B");

    return fieldInfoOfB.GetValue(obj);
}
于 2016-02-16T20:11:58.907 に答える