【问题标题】:Unity Framework and Multiple Constructors InjectionUnity 框架和多构造函数注入
【发布时间】:2011-12-29 16:08:19
【问题描述】:

我有一个类作为依赖项:

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

    public Foo(IMyInterface my) {
    }
}

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

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

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

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

除了我使用InjectionConstructorAttribute,还有什么聪明的方法可以告诉 Unity 忽略第二个构造函数?

【问题讨论】:

    标签: c# unity-container constructor-injection


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      <register type="IFoo" mapTo="Foo">
          <lifetime type="external"/>
          <constructor />
      </register>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 2018-08-06
        • 1970-01-01
        相关资源
        最近更新 更多