3

我有一个类作为依赖项:

public class Foo {
    public Foo() {
        // default constructor
    }

    public Foo(IMyInterface my) {
    }
}

当我尝试将其注入另一个类时,我收到错误消息

依赖解析失败...... InvalidOperationException - 当前类型 IMyInterface 是一个接口,无法构造。您是否缺少类型映射?

我从未注册IMyInterface过任何具体类型,因为我将此构造函数保留用于其他目的。

根据我的理解,如果没有明确指示要解析哪个,Unity 将首先尝试使用最少参数解析构造函数。所以它会尝试初始化默认的构造函数。

除了我使用之外InjectionConstructorAttribute,有没有一种聪明的方法可以告诉 Unity 忽略第二个构造函数?

4

2 回答 2

4

恰恰相反——Unity 将首先尝试使用 MOST 参数解析构造函数。您可以InjectionConstructor在其中一个构造函数上使用属性来告诉 unity 比其他构造函数更喜欢这个构造函数。

于 2011-12-29T16:12:10.180 回答
2

您可以在配置中指示应使用零参数构造函数:

<register type="IFoo" mapTo="Foo">
    <lifetime type="external"/>
    <constructor />
</register>
于 2012-05-31T15:57:01.760 回答