C# .NET FieldInfo—获取它*是*字段的对象

C# .NET FieldInfo—获取它*是*字段的对象,c#,.net,reflection,field,C#,.net,Reflection,Field,如何以编程方式获取对FieldInfo对象为字段的对象的引用 例如,我想要这样的东西: myFieldInfo.GetOwner(); // returns the object of which myFieldObject is a field 试试这个: myFieldInfo.DeclaringType 不幸的是,你不能这样做,因为这种关系的运作方式正好相反。FieldInfo对象表示独立于任何实例的元数据。对象字段的每个实例都有一个FieldInfo 这通常适用于所有元数据对象,如类

如何以编程方式获取对FieldInfo对象为字段的对象的引用

例如,我想要这样的东西:

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

myFieldInfo.DeclaringType

不幸的是,你不能这样做,因为这种关系的运作方式正好相反。FieldInfo对象表示独立于任何实例的元数据。对象字段的每个实例都有一个FieldInfo

这通常适用于所有元数据对象,如类型、字段信息、方法信息等。。。可以使用元数据对象来操作对象的实例。例如,可以使用instance FieldInfo通过GetValue方法获取实例值

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

但是元数据对象永远不会与该类型的实例相关联

小麻烦:C#是一种编程语言。它没有字段信息。是的。你的主题是“C#FieldInfo”。这个问题的文本需要澄清,它看起来好像你在寻找一个实例对象,但你真正想要的是一个类型。@John:我建议你回顾一下这里成千上万个基本上也是这样做的其他C#问题。考虑一下你是否也想评论所有这些。因为这种模糊永远不会消失,所以可能更容易接受它。@Anthony:或者,我可能会不时提出这个问题,而不是放弃。在其他事情中,我可能会发现这是一个语法问题,而不是理解问题,在这种情况下,我会不去管它(就像我不去管最糟糕的语法一样)。我想对我用FieldInfo获得的对象调用一个方法,结果成功了,哎呀,我说得太快了。我想要的是myFieldInfo是字段的对象,而不是该对象的类。@JaysonFix:抱歉,无法返回对对象本身的引用-您唯一能做的就是检索对该字段所属类型的引用。请参阅Jared的答案了解更多信息。