C# 使用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,并创建一个

我正在我的小项目中使用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>();
    }
}
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以实际执行该操作。我想这是另一种选择,但不会真正取代我的工厂。