[英]How do you Invoke methods on ArrayList using its FieldInfo (Reflection)
在我的代碼中,我在ParentClass中聲明了一個ArrayList
public class ParentClass {
...
public ArrayList hybridElem;
...
然后使用從ParentClass運行的Reflection,我能夠成功獲取此ArrayList @運行時的FieldInfo。
使用該FieldInfo,我希望能夠從hybridElem添加或讀取元素。 我能夠獲取ArrayList的所有相關PropertyInfo,例如.Item,.Count,.ToArray等...,還可以獲得這些屬性的吸氣劑和吸氣劑。
不幸的是,它們都沒有被成功調用,因為MethodInfo.Invoke希望對象引用到ArrayList
有解決方案嗎?
您可以輕松完成。 但是,正如注釋正確指出的那樣,我建議您從ArrayList
切換到通用集合。
var instance = new ParentClass();
var fieldInfo = instance.GetType().GetProperty("MyList");
var arrayList = fieldInfo.GetValue(instance) as ArrayList;
var count = arrayList.Count;
帶有:
public class ParentClass
{
public ArrayList MyList { get; set; }
public ParentClass()
{
MyList = new ArrayList();
}
}
或者,使它適應使用字段的類(假設所述字段在某處初始化):
var instance = new ParentClass();
var fieldInfo = instance.GetType().GetField("hybridElem");
var arrayList = fieldInfo.GetValue(instance) as ArrayList;
var count = arrayList.Count;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.