【发布时间】:2014-05-08 13:05:40
【问题描述】:
我有一家工厂:
public class FooFactory : IFooFactory
{
public IFoo CreateFoo(IBar bar)
{
return new Foo(bar);
}
}
我的 Unity 容器需要解析 Foo。
var container = new UnityContainer();
container.RegisterType<IBar, Bar>();
conatiner.RegisterType<IFooFactory,FooFactory>(
new InjectionConstructor(new ResolvedParameter<IBar>())
container.RegisterType<IFoo, Foo>(????????); //What should be here?
我如何告诉 Unity 调用 Factory 上的方法以获得IFoo?
【问题讨论】:
-
如果您不打算使用 FooFactory 来生成新的 Foo,那么有什么意义?
-
@matt 工厂在不同的程序集中,在“现实生活”中它构造了一个复杂的
Foo,以便父程序集中的容器与消耗的程序集解耦;目前,parant 程序集必须构建完整的Foo,因此了解Foo内部的所有私密细节。 -
这就是为什么我不喜欢在示例代码中使用
Foo和Bar;) 很难确定你的代码试图做什么。除了组装和链接问题,您还有一个类,其目的是生成IFoo的实例 - 这就是您应该使用它来获取IFoo。 -
@matt 实际上,我同意你 w.r.t Foo & Bar 的观点。我试图将其概括化。
标签: c# dependency-injection inversion-of-control unity-container ioc-container