Structuremap - 如何获取命名实例并在运行时传递参数?

2024-04-19

我可以将命名实例添加到结构图中,如下所示:

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(使用前将#替换为@)

Structuremap - 如何获取命名实例并在运行时传递参数? 的相关文章

随机推荐