【问题标题】:StructureMap rules for different namespaces不同命名空间的 StructureMap 规则
【发布时间】:2011-11-11 15:54:07
【问题描述】:

我的情况是:

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

例如

Site Area = 它自己的单例

管理区 = 它自己的单例

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

【问题讨论】:

  • 我不确定我是否得到你的问题。是否 Site area 需要 SomeDependency 和 Admin 需要另一种类型的 SomeDependency,并且 SomeDependency 都应该是单例?还是说Site area和Admin area都是singleton,需要和singleton一样的依赖?
  • 第一个。 Admin 和 Site 需要不同的 SomeDependency 作为单例。

标签: c# structuremap


【解决方案1】:

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

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

在上面的示例中,“Use”标记了默认值,而“Add”则添加了一个命名实例。

这将为您提供默认值:

container.GetInstance<ISomeDependency>();

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

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

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多