从 FieldInfo 获取容器 class 实例
Get a container class instance from a FieldInfo
我在这里使用 C# 反射:
我有一个 属性 的 FieldInfo,我想获取它所属的 class 的实例(这样我就可以访问另一个 属性 的内容):
例如 class:
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
提供对 class 中字段元数据的访问,它独立于指定的实例。
如果您有 MyClass
的实例,您可以这样做:
object Function(MyClass obj, FieldInfo fieldInfoOfA)
{
var declaringType = fieldInfoOfA.DeclaringType;
var fieldInfoOfB = declaringType.GetField("B");
return fieldInfoOfB.GetValue(obj);
}
Is this possible ?
没有。反射是关于发现类型的元数据。 FieldInfo
不包含有关该类型的特定实例的任何信息。这就是为什么您甚至根本不需要创建该类型的实例就可以获得 FieldInfo
的原因:
typeof(MyClass).GetField(...)
根据上面的代码片段,您可以看到 FieldInfo
可以在不依赖于特定实例的情况下获得。
我在这里使用 C# 反射: 我有一个 属性 的 FieldInfo,我想获取它所属的 class 的实例(这样我就可以访问另一个 属性 的内容):
例如 class:
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
提供对 class 中字段元数据的访问,它独立于指定的实例。
如果您有 MyClass
的实例,您可以这样做:
object Function(MyClass obj, FieldInfo fieldInfoOfA)
{
var declaringType = fieldInfoOfA.DeclaringType;
var fieldInfoOfB = declaringType.GetField("B");
return fieldInfoOfB.GetValue(obj);
}
Is this possible ?
没有。反射是关于发现类型的元数据。 FieldInfo
不包含有关该类型的特定实例的任何信息。这就是为什么您甚至根本不需要创建该类型的实例就可以获得 FieldInfo
的原因:
typeof(MyClass).GetField(...)
根据上面的代码片段,您可以看到 FieldInfo
可以在不依赖于特定实例的情况下获得。