我正在尝试注册相同接口的多个实现,如下所示:-
**DLL A: Module.cs**
_container.RegisterType<IFoo, Foo1>("Foo1");
**DLL B: Module.cs**
var childContainer = _container.CreateChildContainer(); //childcontainer
childContainer.RegisterType<IFoo, Foo2>("Foo2");
**DLL A: Resolve IFoo for Foo2** (But, resolving IFoo for Foo1 is fine)
var foo2 = container.Resolve<IFoo>("Foo2"); //Error
注意:我在这里收到的容器是“childcontainer”。已检查哈希码。
错误:
Microsoft.Practices.Unity.dll 中出现了“System.InvalidOperationException”类型的第一次机会异常
附加信息:当前类型 IFoo 是一个接口,无法构造。您是否缺少类型映射?
但是,如果我在 Foo1 之后在 DLL A 中注册 Foo2 ,它就可以工作,就像这样:
_container.RegisterType<IFoo, Foo1>("Foo1");
_container.RegisterType<IFoo, Foo2>("Foo2");
Registration (Register) and Resolution (Resolve)
取决于范围和装配?我想要第一种工作方法。任何想法 ?