簡體   English   中英

C#訪問動態類實例字段

[英]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);

.NET 小提琴示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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