统一解决单个接口的多个实现

本文关键字:实现 接口 解决 单个 | 更新日期: 2023-09-27 17:54:03

我有以下场景:

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

解析2(见注释)给出了一个无法找到构造函数的错误。

我基本上想要它解析到Foo2类。我甚至尝试使用参数覆盖,但也没有工作。

请帮帮我。

统一解决单个接口的多个实现

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

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

您没有未命名 IFoo注册