动态调用返回自定义类型的函数时强制转换错误
本文关键字:转换 错误 函数 调用 返回 自定义 类型 动态 | 更新日期: 2023-09-27 17:53:38
在命名空间tool1中有一个名为customType的类。
我正在使用其他一些方法(在命名空间tool1中class1),名为routine1 -它返回"customType列表",如下所示。
下面的代码返回一个customtype的列表,没有错误:
List<tool1.class1.customType> result1 = new List<tool1.class1.customType>();
result1 = tool1.class1.routine1(argsAsStr, p_values);
下面的代码也可以正常工作,没有错误并返回一个对象,如下所示:
Assembly tool1 = Assembly.LoadFrom(@"C:'tool1'tool1'bin'Debug'tool1.dll");
Type type = tool1.GetType("tool1.class1");
object instance = Activator.CreateInstance(type);
object[] parametersArray = new object[] { argsAsStr, p_values};
MethodInfo method = type.GetMethod("routine1");
object result2 = method.Invoke(instance, parametersArray);
但是,当我尝试将结果转换为List而不是object时,我收到一个转换错误:
Assembly tool1 = Assembly.LoadFrom(@"C:'tool1'tool1'bin'Debug'tool1.dll");
Type type = tool1.GetType("tool1.class1");
object instance = Activator.CreateInstance(type);
object[] parametersArray = new object[] { argsAsStr, p_values};
MethodInfo method = type.GetMethod("routine1");
List<tool1.class1.customType> result2 = method.Invoke(instance, parametersArray)
错误信息:
Error: Cannot implicitly convert type 'object' to 'System.Collections.Generic.List<tool1.class1.customType>'.
An explicit conversion exists (are you missing a cast?)
我怎么能克服这个转换错误,并且,希望,返回"不是"一个对象,但"customType的列表"调用方法后??
提前感谢您的关心和贡献,
Aykut
您忘记强制转换method.Invoke
的结果(它返回object
):
var result2 = (List<tool1.class1.customType>)method.Invoke(instance, parametersArray);
您的"方法"返回的是您的自定义类型的单个实例,而不是该类型的列表。
试题:
List<tool1.class1.customType> result2 = new List<tool1.class1.customType>();
result2.Add(method.Invoke(instance, parametersArray));