使用Ninject,你如何配置內核,以便我可以定義什麼構造函數值傳遞到對象的實例化?Ninject傳遞構造函數值
我有以下的一個模塊中配置:
Bind<IService1>()
.To<Service1Impl>()
.InSingletonScope()
.Named("LIVE");
Bind<IService2>()
.To<Service2Impl>()
.InSingletonScope()
.Named("LIVE")
.WithConstructorArgument(
"service1",
Kernel.Get<IService1>("LIVE"));
Service2Impl需要IService1的構造函數的參數,但我想這來自於容器。我也想命名綁定,因爲我的代碼將在運行時定位到不同的版本。
這似乎工作,但它是實現我想要做的正確方法? 我是否應該在不使用命名綁定的情況下實現並將不同的配置模塊連接到內核中?
EDIT
我已經使用了ToMethod()方法現在來指定一個代表到上的特定類型的請求調用。這看起來好多了,因爲如果構造函數配置錯誤,我會得到編譯時警告,而不必知道我首先傳遞的參數的名稱。
謝謝
對於.WithConstructorArgument更喜歡這種語法,編譯器會捕獲重構錯誤。 +1 – gb2d 2013-03-28 11:59:46
您是否真的有一個應用程序需要一個武器界面和劍對象? – starmandeluxe 2016-09-15 08:39:59