我可以将命名实例添加到结构图中,如下所示:
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");
但添加参数后,结构图没有给我 GetNamedInstance 的选项。我哪里错了?
替代方法建议也很好。本质上,我想做的是为枚举的每个元素注册一个具体类型,并使用枚举项来命名它并按名称检索它。但我需要能够在运行时将参数传递给构造函数。
提前致谢。
StructureMap 不提供执行此操作的 API。
您可以使用抽象工厂。 Stack Overflow 上可以找到很多示例。
其中有几个是this one https://stackoverflow.com/questions/1943576/is-there-a-pattern-for-initializing-objects-created-via-a-di-container/1945023#1945023 and that one https://stackoverflow.com/questions/1926826/cant-combine-factory-di.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)