繁体   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