2013-05-02 71 views
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>(); 
+0

你想在這裏解決什麼問題? – Steven 2013-05-02 20:18:43

+0

我使用DI在本地調試中運行時使用內存中數據存儲,然後在生產中使用EF連接到SQL數據庫。我不希望我的EF上下文是單身人士,但每個請求內存存儲是相當無用的:)我意識到我可以將.InSingletonScope()添加到第一個示例中的所有四行,但我只是想知道是否有東西清潔器。 – Kyle 2013-05-02 20:21:55

回答

2

所有.InXXXScope()方法歸結爲一個InScope(callback)方法。或者你可以做一個擴展方法,根據參數做一個或另一個。

Ninject.Extensions.Conventions在做類似這樣的事情時很有用(並且它具有綁定多個接口和/或所有接口的例子)。

最重要的是 - 不要在測試中使用Ninject。我認爲如果你需要像這樣做大量的佈線來實現像這樣的重要開關,你就會錯過抽象。或許AutoFixture或類似軟件可以在您的環境中發揮作用?

+0

以前沒有聽說過AutoFixture,但我必須檢查一下。謝謝! – Kyle 2013-05-03 12:50:34