我有以下情况:
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类。我甚至尝试过使用参数覆盖,但这也不起作用。
请帮我解决这个问题。
答案 0 :(得分:1)
在没有参数的情况下调用Resolve
可以获得未命名注册的实例(没有名为注册)。
在没有参数的情况下调用ResolveAll
会获得所有名为注册的实例(不包括未命名的注册)。
您没有IFoo
的未命名注册。