簡體   English   中英

從FieldInfo獲取容器類實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM