我有一個類DataHolder
,它存儲不同的列表,並且我有一個函數在courses
列表被初始化時更新下拉列表。我有不同類型的列表(例如,course
,student
)以及用於檢查每種類型的不同功能。我想創建一個通用函數,適用於不同類型的列表,並且主要支持是我不確定如何動態地使用字符串在C#中訪問字段名稱。我正在閱讀反思,但似乎無法使其工作。訪問Unity C#類中的字段(不知道如何正確反射)
基本上,我正在尋找一個C#相當於dataHolder[dataType] != null && dataHolder[dataType].length
。
private DataHolder dataHolder;
void CheckIfCoursesHasBeenPulled (string dataType) {
//dataHolder has been initialised in Start function
if (dataHolder.courses != null && dataHolder.courses.Count > 0) {
UpdateDropdown(dataHolder.courses);
}
//code that I hope to do but getting error
if (dataHolder.GetType().GetField(dataType).GetValue(dataHolder) != null && dataHolder.GetType().GetField(dataType).GetValue(dataHolder).Count > 0) {
UpdateDropdown(dataHolder.courses);
}
}
錯誤消息
Operator ‘>’ cannot be applied to operands of type ‘method group’ and ‘int’
謝謝!我試圖運行你的代碼,但'data'似乎顯示爲null,而'dataHolder.courses'有效。還有什麼我應該做的? –
您正在投射錯誤的類型。如果該對象不是Foo的一個實例,則'Foo'返回null。 「課程」是什麼類型?您需要使用'GetValue(...)作爲T',其中T是正確的類型。 – Doug