我在我的小项目中使用StructureMap。我有一个类需要使用可以由StructureMap(Bar
)轻松传递的类实例来构造,但构造函数参数包含一些事先不知道的参数。
class Bar { }
class Foo
{
public Foo(string magic, Bar bar) { }
}
所以在我的代码中我需要获取Foo
的实例。在这段代码中,我知道magic
的期望值。
我应该如何创建我的Foos?
我现在正在做的是我通常创建一个工厂,注入IContainer
并使CreateFoo
方法接受运行时已知的内容。
class FooFactory
{
private readonly IContainer _container;
public FooFactory(IContainer container)
{
_container = container;
}
public Foo CreateFoo(string magic)
{
return _container.With("magic").EqualTo(magic).GetInstance<Foo>();
}
}
我在需要创建新FooFactory
的任何地方注入Foo
,我的课程不需要知道Foo
究竟是如何制作的。
我知道我可以在没有工厂的情况下注入IContext并创建Foos,但是当构造代码变得更复杂并且需要复制时,它看起来很臭。
工厂以外的其他替代品是什么?
答案 0 :(得分:1)