结构图 – 如何在运行时获取命名实例并传递参数?

我可以像这样在structmap中添加一个命名实例:

For().Add().Named("FooOne"); 

然后我可以得到:

 ObjectFactory.GetNamedInstance("FooOne"); 

我可以通过这样的注册在运行时传递参数:

 For().Add().Ctor("someParam"); 

并获得这样的实例:

 ObjectFactory.With("someParam").EqualTo("blah").GetInstance(); 

一切都很好。 但我希望有一个命名实例并传递一个参数。 所以我这样注册:

 For().Add().Named("FooOne").Ctor("someParam"); 

但我无法弄清楚获取命名实例的语法并在运行时传递参数? 我正在尝试做类似的事情:

 ObjectFactory.With("someParam").EqualTo("blah").GetNamedInstance("FooOne"); 

但是在添加参数后,structuremap没有为我提供GetNamedInstance的选项。 我哪里错了?

替代方法建议也会很好。 基本上我要做的是为枚举的每个元素注册一个具体的类型,并使用枚举项来命名它并按名称检索它。 但我需要能够在运行时将参数传递给构造函数。

提前致谢。

StructureMap不提供用于执行此操作的API。

您可以使用抽象工厂。 Stack Overflow上有很多可以找到的例子。

其中一些是这一个和那一个 。

您可以使用

 var args = new ExplicitArguments(); args.SetArg("someParam", blah); ObjectFactory.Container.GetInstance(args, "FooOne");