Unity 系统无效操作异常:'未找到与数据匹配的成员

3

我正在尝试将以下类型注册为:

最初的回答:

我正在尝试注册以下类型:

IDbManager db= new DbManager(ConnectionDbType.SqlServer);
InjectionConstructor injectionConstructor = new InjectionConstructor(db);

.RegisterType<IDbManager, DbManager>(injectionConstructor)

通常这样表达:

最初的回答

IDbManager dbmanager = new DbManager(ConnectionDbType.SqlServer)

完整错误信息:

System.InvalidOperationException:“注入的构造函数 .ctor(DataAccessHandler.DbManager) 无法与类型 IDbManager 上的任何公共构造函数匹配。”

出错位置:RegisterType(Invoke.Constructor(DataAccessHandler.DbManager))

内部异常:ArgumentException:“注入的构造函数 .ctor(DataAccessHandler.DbManager) 无法与类型 IDbManager 上的任何公共构造函数匹配。”

我做错了什么?

将DataAccessHandler.DbManager类的构造函数注入到IDbManager接口实现中时,发生了无法匹配公共构造函数的错误。请检查IDbManager接口实现的构造函数,并确保它们是公共的。
1个回答

1
如果有其他人遇到这个问题,最近我也遇到了这个问题,我试图注册一个具有两个参数构造函数的类型,但Unity一直声称找不到构造函数。所涉及的构造函数需要一个Type和一个String,最初我尝试在注册中注入它,如下所示:
...
new InjectionConstructor(this.GetType(), "some string")

事实证明,由于某种原因,Unity在根据我提供的值解析构造函数参数类型时遇到了问题。至少对于第一个参数来说,我必须明确指定构造函数应该期望哪种类型的参数,这意味着我的注册必须进行以下更改:
new InjectionConstructor(new InjectionParameter<Type>(this.GetType()), "some string")
< p > InjectionParameter 的通用参数必须与声明的构造函数参数类型相匹配,以便Unity可以正确解析构造函数,但您为该参数传递的参数只需要与该类型兼容即可。 InjectionParameter 也可以是任何其他Unity参数类型,如ResolvedParameter等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接