我在名称空间工具1中有一个名为customType的类。
我正在使用其他方法(名称空间工具1中的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?)
我如何克服这个投射错误,并希望返回&#34; not&#34;一个对象但是&#34;一个customType&#34;在调用方法后??
提前感谢您的兴趣和贡献,
艾库特
答案 0 :(得分:0)
您忘记投放method.Invoke
(返回object
)的结果:
var result2 = (List<tool1.class1.customType>)method.Invoke(instance, parametersArray);
答案 1 :(得分:-1)
您的“方法”返回自定义类型的单个实例,而不是该类型的列表。
尝试:
List<tool1.class1.customType> result2 = new List<tool1.class1.customType>();
result2.Add(method.Invoke(instance, parametersArray));