[英]Get a container class instance from a FieldInfo
我在这里使用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
}
这可能吗 ?
FieldInfo
提供对类中字段的元数据的访问,它独立于指定的实例。
如果您有MyClass
的实例,则可以执行以下操作:
object Function(MyClass obj, FieldInfo fieldInfoOfA)
{
var declaringType = fieldInfoOfA.DeclaringType;
var fieldInfoOfB = declaringType.GetField("B");
return fieldInfoOfB.GetValue(obj);
}
这可能吗 ?
否。反射与发现类型的元数据有关。 FieldInfo
不包含有关该类型的特定实例的任何信息。 这就是为什么即使根本不创建该类型的实例也可以获取FieldInfo
原因:
typeof(MyClass).GetField(...)
在上面的代码段中,您可以看到可以获得FieldInfo
而不依赖于特定实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.