[英]C# Access dynamic class instance field
namespace ACPlan {
public Class ACUnits {
public List<ACUnit> ACUnits_List = new List<ACUnit>();
public ACUnits() {
ACUnits_List.add(...);
ACUnits_List.add(...);
ACUnits_List.add(...);
ACUnits_List.add(...);
}
}
}
在另一個班級的其他地方:
Type x = Type.GetType("ACPlan.ACUnits");
dynamic instance = Activator.CreateInstance(x);
instance.ACUnits_List
// 檢索 ACUnits_List。 好的!
現在,我需要能夠將“ACUnits_List”指定為變量,但是:
string field = "ACUnits_List";
instance.field
// 異常 - 實例不包含字段的定義
instance[field]
// 不能用 [] 應用索引
instance.GetFields()
// 實例不包含 'GetFields' 的定義
然而, instance.ACUnits_List
工作得很好。
當字段名稱在變量中時,如何獲取ACUnits_List
?
編輯:另外, instance.GetType()
確實返回
{Name = "ACUnits" FullName = "ACPlan.ACUnits"}
所以,我相信instance
實際上是我班級的一個實例。
.GetField()
是來自Type
的方法。
您需要先從Type
獲取字段( FieldInfo
)。
要從字段中獲取值,您需要傳遞實例,如下所示:
FieldInfo fieldInfo = x.GetField(field);
List<ACUnit> fieldValue = fieldInfo.GetValue(instance);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.