簡體   English   中英

您如何使用其FieldInfo(Reflection)調用ArrayList上的方法

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

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