我有一个类作为依赖:
public class Foo {
public Foo() {
// default constructor
}
public Foo(IMyInterface my) {
}
}
当我尝试将其注入另一个类时,我收到了错误消息
依赖项的解析失败...... InvalidOperationException - 当前类型IMyInterface是一个接口,不能 建造。你错过了类型映射吗?
我从未使用任何具体类型注册IMyInterface
,因为我将此构造函数保留用于其他目的。
根据我的理解,如果没有明确指示要解决哪个参数,Unity将首先尝试使用最少的参数来解析构造函数。因此它会尝试初始化默认的constroctor。
除了我使用InjectionConstructorAttribute
之外,还有一种聪明的方法可以告诉Unity忽略第二个构造函数吗?
答案 0 :(得分:3)
相反 - Unity将首先尝试使用MOST参数解析构造函数。您可以在一个构造函数上使用InjectionConstructor
属性来告诉unity更喜欢这个构造函数而不是其他构造函数。
答案 1 :(得分:2)
您可以在配置中指出应该使用零参数构造函数:
<register type="IFoo" mapTo="Foo">
<lifetime type="external"/>
<constructor />
</register>