【发布时间】:2011-02-16 08:41:09
【问题描述】:
从昨天开始,我正在解决一个问题,但我还没有得到它......
我有一个包含许多方法的类,并在运行时决定必须调用哪个方法。这些方法中的每一个都从我的 Businessobjects 中返回一个包含元素的列表。
我的班级是这样的:
public class ReflectiveClass {
public List<BO1> DoSomethingWithBO1(int param){
List<BO1> list = new List<BO1>();
//....
return list;
}
public List<BO2> DoSomethingWithBO2(int param){
List<BO2> list = new List<BO2>();
//....
return list;
}
public void Process(){
//...get MethodInfo and so on
List<object> myReturnValue = (List<object>)methodInfo.Invoke(this, new object[]{param});
// here comes the Exception
}
}
所以,在调用方法时,我得到了一个 无效转换异常 调试器告诉我他不能从
System.Collections.Generic.List`1[BO1]
到
System.Collections.Generic.List`1[System.Object]
我想知道为什么这不起作用。我想如果我使用一个列表,每个对象都可以在这个列表中。
我什至用 List 尝试过,但行为相同。
是否可以读取反射方法的返回值类型?然后我可以用这个返回值创建一个通用列表并转换到这个列表吗?这将是美妙的。
您好,非常感谢您的帮助! 本尼
【问题讨论】:
标签: c# list reflection generics