【问题标题】:Resolve multiple implementation of a single interface in unity统一解决单个接口的多个实现
【发布时间】:2014-03-26 13:34:58
【问题描述】:

我有以下情况:

public interface IFoo { }

public interface IFoo3 { }

public class Foo4 : IFoo3 { }

public class Foo1 : IFoo { }

public class Foo2 : IFoo
{  
    Foo2 (IFoo object1, IFoo3 object2)   
}

在客户端:

  IUnityContainer container = new UnityContainer();
  container.RegisterType<IFoo, Foo1>("Foo1");
  container.RegisterType<IFoo3, Foo4>();
  container.RegisterType<IFoo, Foo2>("Foo2");

  IFoo3 obj = container.Resolve<IFoo3>(); //Resolve 1

  IFoo obj2 = container.Resolve<IFoo>(); //Resolve 2

resolve 2(见注释)给出了一个找不到构造函数的错误。

我基本上希望它解析为 Foo2 类。我什至尝试过使用参数覆盖,但也没有用。

请帮帮我。

【问题讨论】:

标签: c# unity-container unity-interception


【解决方案1】:

不带参数调用Resolve 会得到一个未命名 注册实例(没有已命名 注册)。

不带参数调用ResolveAll 可以获得所有命名注册的实例(不包括未命名注册)。

您没有未命名的IFoo 注册。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多