2

想要使用激活自定义数据创建一个类的实例,如下所示:

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) {...}

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

4

1 回答 1

2

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

如果你有一个构造函数:

public MockRepository(string customData) {...}

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

于 2012-11-06T18:42:48.467 回答