有没有办法将所有绑定的默认范围设置为“特定类”。例如,如果我有以下内容:
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>();
答案 0 :(得分:2)
所有.InXXXScope()
方法归结为InScope( callback)
方法。或者你可以制作一个扩展方法,根据参数做一个或另一个。
Ninject.Extensions.Conventions在做这样的事情时很有用(并且它有你正在做的绑定多个接口和/或所有接口的例子)。
最重要的是 - 不要在测试中使用Ninject。我认为如果你需要像这样做大量的接线来实现像这样的重要开关,你会错过一个抽象。也许AutoFixture或类似的东西可以在您的环境中发挥作用?