结构图:根据元或上下文信息获取服务

Structure Map: Get service based on meta or context information

我的应用程序中有两种类型的搜索:国际搜索和国内搜索。两者具有几乎相同的数据结构,但数据源不同。我创建了两个具有相同界面的不同存储库。现在我想根据上下文或带有结构图的元信息请求相应的存储库。

例如,如果用户在国家搜索页面上,IoC Container 应该将国家存储库注入到 Controller 中。如果用户触发国际搜索,则应使用相同的控制器,但使用国际存储库。

这可以用结构图实现吗?如果是,我该如何实现?

你可以像这样使用命名实例 http://docs.structuremap.net/InstanceExpression.htm => 覆盖构造函数依赖性

基于运行时值注入依赖项的最常见方法是使用工厂模式(例如抽象工厂模式)。

通过这种方式,您基本上可以注入一个 class 来负责确定运行时值(例如,会话变量的存在),然后根据该运行时创建您的依赖项(您的存储库)的适当实例值。

我建议您查看 Mark Seemann's blog post on the abstract factory pattern, or 以获取有关如何设置的示例。

不想自我推销,我还整理了一份 blog post,其中更详细地介绍了上述应该有用的答案。