【问题标题】:Can Ninject be instructed to apply context-based logic to all bindings?是否可以指示 Ninject 将基于上下文的逻辑应用于所有绑定?
【发布时间】:2010-04-15 16:24:36
【问题描述】:

我们最近开始使用依赖注入,并且我们选择了 Ninject 2(目前)作为我们的 IoC 容器。当我重构我们的解决方案以纳入 DI 原则时,我遇到了一些让我有些烦恼的事情,我想知道是否有一种简单的方法可以绕过它。

对于我们的数据层,我们有一大堆继承同一个通用类 (EntityMapper) 的数据访问类。虽然过去我们总是在需要时构建这些类的新实例,但它们实际上都可以更改为单例。我们已经重写了 ObjectDataSource 以使用 Ninject 实例化其数据访问对象,因此每当我们创建一个指向 EntityMapper 类之一的 ObjectDataSource 时,Ninject 将使用其默认的自绑定策略来注入必要的依赖项。由于这些类太多了,我们宁愿不必为每个 EntityMapper 类创建显式绑定,也不必为每个类都设置特殊属性。但是,我希望能够指示 Ninject 将 EntityMapper 的任何实例制作成单例类。像这样的:

Bind(t => typeof(IEntityMapper).IsAssignableFrom(t)).InSingletonScope();

有什么办法吗?

【问题讨论】:

    标签: ninject ninject-2


    【解决方案1】:

    您可以使用conventions extension 执行以下操作

    var kernel = new StandardKernel();
    kernel.Scan( x=>
                 {
                     x.FromAssemblyContaining<MyEntityMapper>();
                     x.FromCallingAssembly();
                     x.WhereTypeInheritsFrom<IEntityMapper>();
                     x.InSingletonScope();
                 } );
    

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多