将所有绑定的默认范围更改为“到”特定类

时间:2013-05-02 20:10:04

标签: dependency-injection ninject

有没有办法将所有绑定的默认范围设置为“特定类”。例如,如果我有以下内容:

kernel.Bind<IMyInterface1>.To<MySingletonClass>();
kernel.Bind<IMyInterface2>.To<MySingletonClass>();
kernel.Bind<IMyInterface3>.To<MySingletonClass>();
kernel.Bind<IMyInterface4>.To<MySingletonClass>();

我希望所有这些都是默认的单例作用域。以下所有内容都是默认的请求范围:

kernel.Bind<IMyInterface1>.To<MyClass>();
kernel.Bind<IMyInterface2>.To<MyClass>();
kernel.Bind<IMyInterface3>.To<MyClass>();
kernel.Bind<IMyInterface4>.To<MyClass>();

1 个答案:

答案 0 :(得分:2)

所有.InXXXScope()方法归结为InScope( callback)方法。或者你可以制作一个扩展方法,根据参数做一个或另一个。

Ninject.Extensions.Conventions在做这样的事情时很有用(并且它有你正在做的绑定多个接口和/或所有接口的例子)。

最重要的是 - 不要在测试中使用Ninject。我认为如果你需要像这样做大量的接线来实现像这样的重要开关,你会错过一个抽象。也许AutoFixture或类似的东西可以在您的环境中发挥作用?