0
私はジェネリッククラスは、C#でジェネリック型のフィールドを取得する方法
class Foo<T>
{
T fooVal;
public T FooVal { get { return fooVal; } }
}
を持って言うと、私はインスタンス化されたタイプからfooValためのFieldInfoを取得したい:
はFoo<int> fooInt = new foo<int>();
FieldInfo fooValField = fooInt.GetType().GetField("fooVal");
問題がありますfooValFieldはnullです。私がGetFields()
と呼んでも空の配列を返します。私はタイプが正しいことを知っています。リフレクションはFoo'1です。なぜfooValフィールドが表示されないのか分かりません。私がここで紛失しているものはありますか? GetPropertiesを呼び出すとFooValプロパティが表示されるので、fooValフィールドも表示されると思いますか?
あなたはそれらを指定できる 'BindingFlags.NonPublic | BindingFlags.Instance'とoverloadを使うべきです。 – PetSerAl
ありがとう!私は当初BindingFlagsを使用していましたが、私はその時に別の間違いがあったに違いありません。パラメータなしでGetFields()を呼び出すと*すべてのフィールドが返され、私の間違いが明らかになると思ったが、そうではなかった。私はそれらのBindingFlagsでもう一度試してみました。これを答えとして入れれば、大きな緑色のチェックマークを付けることができます:) – HypnoToad
@DavidL属性には関係しませんが、ほぼ重複していると私は同意します。私は最初に検索しようとしましたが、何らかの理由で質問が出ることはありませんでした! – HypnoToad