C# 使用StructureMap创建具有运行时构造函数参数的对象
我正在我的小项目中使用StructureMap。我有一个类需要使用StructureMap(C# 使用StructureMap创建具有运行时构造函数参数的对象,c#,dependency-injection,structuremap,C#,Dependency Injection,Structuremap,我正在我的小项目中使用StructureMap。我有一个类需要使用StructureMap(Bar)可以轻松交付的类的实例来构造,但是构造函数参数包含一些事先不知道的参数 class Bar { } class Foo { public Foo(string magic, Bar bar) { } } 所以在我的代码中,我需要得到一个Foo的实例。在这段代码中,我知道magic的期望值。 我应该如何创建我的Foos? 我现在做的是通常创建一个工厂,注入IContainer,并创建一个
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>();
}
}
class工厂
{
专用只读IContainer\u容器;
公共食品工厂(集装箱)
{
_容器=容器;
}
public Foo CreateFoo(字符串魔术)
{
返回_container.With(“magic”).EqualTo(magic).GetInstance();
}
}
我在任何需要创建新的Foo
的地方注入FooFactory
,我的类不需要知道Foo
是如何创建的
我知道我可以在没有工厂的情况下注入IContext并创建Foos,但是当构造代码变得更复杂并且需要复制时,它看起来很臭
除了工厂之外,还有其他选择吗?请尝试SM文档以获得明确的参数:更改您的设计。你的应用程序很复杂。我喜欢这个。它将添加一些“提供者”和“上下文”到我原本简单的应用程序中。。。创建接受对象设置的初始化方法可以吗?我正在做一个小游戏,需要一些东西,比如spawn posistion、初始对象速度等。我希望
Bar
自动解析,但我希望“magic”是显式的,就像我的CreateFoo
方法一样。我可以使用explicitTargetments
更改CreateFoo以实际执行该操作。我想这是另一种选择,但不会真正取代我的工厂。