【问题标题】:Create class instance with activationCustomData parameter使用 activationCustomData 参数创建类实例
【发布时间】:2013-01-15 05:39:26
【问题描述】:

想要创建具有激活自定义数据的类的实例,如下所示:

var repo = Activator.CreateInstance(Type.GetType(repoFullName),
                new string[] { connectionString }) as IRepository;

如果我没有在 CreateInstance 方法中传递作为字符串数组的第二个参数,一切正常,但使用自定义数据参数方法会引发异常

System.MissingMethodException:找不到类型“Namespase.MockRepository”的构造函数。

实例化类型的公共构造函数

public MockRepository(string[] customData) {...}

public MockRepository(Object[] customData) {...}

没有改变效果。我做错了什么?

【问题讨论】:

    标签: c# .net reflection


    【解决方案1】:

    您需要修改构造函数签名,现在您调用它的方式是传递单个字符串/对象而不是数组,因此如果您想激活对象视图,它无法找到匹配的构造函数以这种方式反射,对象必须具有与调用代码匹配的构造函数。使用对象数组将参数传递给激活的原因是允许根据位置将多个参数传递给构造函数,并且类型必须与定义匹配。

    如果你有一个构造函数:

    public MockRepository(string customData) {...}
    

    它应该正确地实例化,也就是说,如果您还打算在不向构造函数传递任何参数的情况下进行实例化,那么您还需要定义一个无参数的构造函数。

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多