如另一个问题Getting unity to resolve multiple instances of the same type
中所述我已按如下方式初始化了unity容器。
static void Main(string[] args)
{
var container = new UnityContainer();
container.RegisterType<IFoo, Foo1>("aaa");
container.RegisterType<IFoo, Foo2>("bbb");
// container.Resolve<IEnumerable<IFoo>>(); returns 0
// container.ResolveAll<IFoo>(); returns 0
Console.WriteLine(foos.Count());
Console.ReadLine();
}
当unity初始化下面的类时,它会发送一个包含两个元素的数组。但这两个元素来自同一个类Foo1。我不想要重复。我需要注入IFoo的所有不同实现。
public class Test
{
IFoo[] _fooSet;
public Test(IFoo[] allRegisteredInterfaces)
{
_fooSet = allRegisteredInterfaces;
}
}
例如解决方案 Injecting arrays with Unity 不起作用,因为它在注入的数组中创建重复项。
怎么做?另请注意,我不想注册实例实现。我可以通过注册每个IFoo实现实例的数组来轻松完成此操作。例如,以下解决方案无效,因为它注册实例而不是类型。
container.RegisterInstance<IFoo[]>(new IFood[] {
container.Resolve<Foo1>(),
container.Resolve<Foo2>()
});
答案 0 :(得分:1)
我终于找到了答案。事实证明,有一个自定义生命周期管理器,它被错误编码。 我首先创建了一个黑色控制台应用程序,并尝试了统一代码示例,它工作。这导致了原始代码库错误的结论。