我的情景是:
我的项目的两个不同部分(ASP.NET MVC区域)需要与Singleton相同的构造函数注入,但不同的实例设置略有不同。
E.g。
网站区域=自己的单身人士
管理区域=自己的单身人士
这可以通过StructureMap实现吗?项目的各个部分位于不同的名称空间中。
答案 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");