我们最近开始使用依赖注入,并且我们选择了 Ninject 2(目前)作为我们的 IoC 容器。当我重构我们的解决方案以结合 DI 原则时,我遇到了一些让我有些烦恼的事情,我想知道是否有一种简单的方法可以绕过它。
对于我们的数据层,我们有一大堆继承同一个通用类(EntityMapper)的数据访问类。虽然过去我们总是在需要时构建这些类的新实例,但它们实际上都可以更改为单例。我们已经重写了 ObjectDataSource 以使用 Ninject 实例化其数据访问对象,因此每当我们创建一个指向 EntityMapper 类之一的 ObjectDataSource 时,Ninject 将使用其默认的自绑定策略来注入必要的依赖项。由于这些类太多了,我们宁愿不必为每个 EntityMapper 类创建显式绑定,也不必为每个类都设置特殊属性。然而,我希望能够指示 Ninject 将 EntityMapper 的任何实例制作成单例类。像这样的东西:
Bind(t => typeof(IEntityMapper).IsAssignableFrom(t)).InSingletonScope();
有没有办法做到这一点?