0

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

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>();
4

1 回答 1

2

所有的.InXXXScope()方法都归结为一个InScope( callback)方法。或者,您可以创建一个扩展方法,根据参数执行其中一个或另一个。

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

最重要的是 - 不要在测试中使用 Ninject。我认为如果您需要像这样进行大量布线来影响这样的重要开关,那么您将错过一个抽象。也许 AutoFixture 或类似的东西在您的环境中可以发挥作用?

于 2013-05-02T21:27:17.510 回答