2009-07-13 6 views
2

FieldInfoオブジェクトがフィールドであるオブジェクトへの参照をプログラムで取得するにはどうすればよいですか?.NET FieldInfo - それが*フィールドであるオブジェクトを取得する

例えば、私はこのような何かが欲しい:

myFieldInfo.GetOwner(); // returns the object of which myFieldObject is a field 
+1

マイナーな悩み:C#はプログラミング言語です。 FieldInfoはありません。 .NETはそうです。あなたの主題は "C#FieldInfo"と言っています。 –

+0

この質問のテキストは、明確化とともに行うことができます。インスタンスオブジェクトを取得するように見えますが、本当に必要なのはタイプです。 – AnthonyWJones

+0

@ John:他の何千ものC#質問をここでは根本的に同じようにレビューすることをお勧めします。あなたもそれらすべてをコメントしたいかどうかを検討してください。それが決して遠くに行くことがないので、この笑いと和解するほうが簡単かもしれません。 – AnthonyWJones

答えて

12

は、残念ながら、あなたは関係が逆のように動作することはできませんので。 FieldInfoオブジェクトは、どのインスタンスからも独立したメタデータを表します。オブジェクトのフィールドの各インスタンスごとに1つのFieldInfoがあります。

これは一般的に、Type、FieldInfo、MethodInfoなどのすべてのメタデータオブジェクトに当てはまります。メタデータオブジェクトを使用してオブジェクトのインスタンスを操作することは可能です。たとえば、FieldInfoを使用して、GetValueメソッドを介してインスタンス値を取得できます。

FieldInfo fi = GetFieldInfo(); 
object o = GetTheObject(); 
object value = fi.GetValue(o); 

ただし、メタデータオブジェクトは、そのタイプのインスタンスに関連付けられることはありません。

+0

ありがとう、Jared。 – JaysonFix

3

はこれを試してみてください:

myFieldInfo.DeclaringType 
+0

ありがとうございました。 – JaysonFix

+0

おっと、私はあまりにも早く話しました。私はmyFieldInfoがそのオブジェクトのクラスではなくフィールドである*オブジェクト*を望んでいました。 – JaysonFix

+0

@JaysonFix:申し訳ありませんが、オブジェクト自体への参照を返す方法はありません - あなたができる唯一のことは、フィールドが属する*型*への参照を取得することです。それについての詳細は、Jaredの答えをご覧ください。 –

関連する問題