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