【问题标题】:Creating an instance of a type in another assembly with Activator使用 Activator 在另一个程序集中创建类型的实例
【发布时间】:2014-03-27 17:04:38
【问题描述】:

我正在尝试在引用的程序集中创建类型的实例

var obj = Activator.CreateInstance("Config", "Config.TypeName");
var RunMethodInfo = obj.GetType().GetMethod("Run"); //null

get 方法返回 null 虽然 run 方法存在并且激活器似乎创建了实例,但 Run 方法是公共的,知道 GetMethod 为什么返回 null 吗?

【问题讨论】:

  • 试试obj.GetType().GetMethods() 看看返回了什么...
  • Run 看起来像什么?它是一个实例方法吗?什么参数?
  • 您必须共享该引用程序集的部分内容以帮助您解决此问题。 activator.createinstance 的第一个参数应该是程序集名称:物理文件名。第二个参数应该是确切的类型。查看 msdn 了解更多信息:msdn.microsoft.com/en-us/library/vstudio/d133hta4
  • 感谢大家的帮助,我想通了。

标签: c# .net reflection


【解决方案1】:

我只需要调用 Unwrap() 事情现在按预期工作

var obj = Activator.CreateInstance("Config", "Config.TypeName").Unwrap();
var RunMethodInfo = obj.GetType().GetMethod("Run");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2020-10-16
    相关资源
    最近更新 更多