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