我可以像这样将命名实例添加到结构映射中:
For<IFoo>().Add<Foo>().Named("FooOne");
然后我可以得到:
ObjectFactory.GetNamedInstance<IFoo>("FooOne");
我可以通过这样的注册在运行时传递参数:
For<IFoo>().Add<Foo>().Ctor<string>("someParam");
并得到一个这样的实例:
ObjectFactory.With("someParam").EqualTo("blah").GetInstance<IFoo>();
一切都好。但我想要一个命名实例并传递一个参数。所以我是这样注册的:
For<IFoo>().Add<Foo>().Named("FooOne").Ctor<string>("someParam");
但是我无法弄清楚获取命名实例并在运行时将参数传递给它的语法?我正在尝试做类似的事情:
ObjectFactory.With("someParam").EqualTo("blah").GetNamedInstance<IFoo>("FooOne");
但是在添加参数后,structuremap 没有给我 GetNamedInstance 的选项。我哪里错了?
替代方法建议也很好。本质上,我要做的是为枚举的每个元素注册一个具体类型,并使用枚举项对其进行命名并按名称检索它。但是我需要能够在运行时将参数传递给构造函数。
提前致谢。