.NET FieldInfo - получить объект, из которого он * является * полем - PullRequest
2 голосов
/ 13 июля 2009

Как программно получить ссылку на объект, для которого объект FieldInfo является полем?

Например, я бы хотел что-то вроде этого:

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

Ответы [ 2 ]

12 голосов
/ 13 июля 2009

К сожалению, вы не можете, потому что отношения работают противоположным образом. Объект FieldInfo представляет метаданные, которые не зависят от какого-либо экземпляра. Для каждого экземпляра поля объекта существует 1 FieldInfo.

Это в целом верно для всех объектов метаданных, таких как Type, FieldInfo, MethodInfo и т. Д. ... Объекты метаданных можно использовать для управления экземпляром объекта. Например, FieldInfo может использоваться для получения значения экземпляра с помощью метода GetValue.

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

Но объект метаданных никогда не будет связан с экземпляром типа.

3 голосов
/ 13 июля 2009

Попробуйте это:

myFieldInfo.DeclaringType
...