【问题标题】:Get a container class instance from a FieldInfo从 FieldInfo 获取容器类实例
【发布时间】:2016-02-16 20:06:13
【问题描述】:

我在这里使用 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
}

这可能吗?

【问题讨论】:

标签: c# reflection fieldinfo


【解决方案1】:

这可能吗?

没有。反射是关于发现一种类型的元数据。 FieldInfo 不包含有关该类型的特定实例的任何信息。这就是为什么您可以在根本不创建该类型的实例的情况下获得 FieldInfo 的原因:

typeof(MyClass).GetField(...)

鉴于上面的sn-p,你可以看到FieldInfo可以在不依赖特定实例的情况下获得。

【讨论】:

    【解决方案2】:

    FieldInfo 提供对类中字段元数据的访问,它独立于指定的实例。

    如果您有MyClass 的实例,您可以这样做:

    object Function(MyClass obj, FieldInfo fieldInfoOfA)
    {
        var declaringType = fieldInfoOfA.DeclaringType;
    
        var fieldInfoOfB = declaringType.GetField("B");
    
        return fieldInfoOfB.GetValue(obj);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2023-04-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多