使用activationCustomData参数创建类实例

时间:2012-11-06 18:37:21

标签: c# .net reflection

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

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

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

1 个答案:

答案 0 :(得分:2)

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

如果你有一个构造函数:

public MockRepository(string customData) {...}

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