【问题标题】:Get return value after invoking a method from dll using reflection使用反射从dll调用方法后获取返回值
【发布时间】:2013-03-27 05:49:33
【问题描述】:

我正在使用反射加载 dll 并尝试调用返回 List<customType> 的方法。如何调用方法并获取返回值。我试过这个,但说entry point not found exception

MethodInfo[] info= classType.GetMethods();
MethodInfo method = mInfo.FirstOrDefault(c => c.Name == "GetDetails");
object values = method.Invoke(classInstance, new object[] { param1});

values 有异常 entry point not found

【问题讨论】:

标签: c# reflection


【解决方案1】:
Assembly assembly = Assembly.LoadFile(@"assembly location");    // you can change the way you load the assembly
Type type = assembly.GetType("mynamespace.NameOfTheClass");                                       
ConstructorInfo constructor = type.GetConstructor(Type.EmptyTypes);
object classObject = constructor.Invoke(new object[] { });

MethodInfo methodInfo = type.GetMethod("GetDetails");
var returnValue = (List<customType>)methodInfo.Invoke(classObject, new object[] { param1});

根据您的类是否为静态以及您的构造函数是否采用任何参数,可能需要进行一些更改。

【讨论】:

  • 这个答案应该解决什么问题?
  • 取决于 OP 遇到的问题,由于缺乏信息很难说,但这似乎是程序集加载方式的问题,因此提供了详细示例。
  • 如果OP已经有了class类型,怎么会无法正确加载程序集呢?
  • 很难说只有 3 行代码并且没有堆栈跟踪。如果他/她需要替代方案,上面的示例可以正常工作。除此之外,我可以在获得更多信息后立即更新/删除答案。
猜你喜欢
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多