c# - 使用activationCustomData参数创建类实例

标签 c# .net reflection

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

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

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

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

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

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

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

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

最佳答案

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

如果你有一个构造函数:

public MockRepository(string customData) {...}

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

关于c# - 使用activationCustomData参数创建类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257208/

相关文章:

c# - 将服务引用传递给另一个服务层是不好的做法吗?

c# - 从 Windows 7 中的 VS2010 使用 VS 调试器中的 Directory.Delete(path)

c# - "\n"和 Environment.NewLine 的区别

c# - 比较两个 DateTimeOffset 对象

java - 为什么 java.lang.reflect.WildcardType 类返回上限和下限的数组?

c# - 将复杂的字符串解析为 DateTime

c# - 如何按位操作十六进制值?

c# - 检测诚实的网络爬虫

c# - 通过反射动态创建通用列表时出错

python-3.x - 去命名参数