不同命名空间的StructureMap规则

时间:2011-11-11 15:54:08

标签: c# structuremap

我的情景是:

我的项目的两个不同部分(ASP.NET MVC区域)需要与Singleton相同的构造函数注入,但不同的实例设置略有不同。

E.g。

网站区域=自己的单身人士

管理区域=自己的单身人士

这可以通过StructureMap实现吗?项目的各个部分位于不同的名称空间中。

1 个答案:

答案 0 :(得分:0)

如果您将一个单例作为默认单元,另一个单元作为命名实例,则可以执行此操作。在那些地方你需要命名实例,你映射你的依赖关系使用命名实例而不是默认实例。

Container container = new Container(x => {
      x.For<ISomeDependency>().Singleton().Use<SomeDependency>(); // User
      x.For<ISomeDependency>().Singleton().Add<SomeDependency>().Named("admin");
});

在上面的例子中“使用&lt;&gt;”标记为默认值,而“添加&lt;&gt;”正在添加一个命名实例。

这将为您提供默认设置:

container.GetInstance<ISomeDependency>();

虽然这个会给你命名的实例:

container.GetInstance<ISomeDependency>("admin");