0
我的一個小問題與我的簡單示例。Ninject擴展工廠中的NamedLikeFactoryMethod工作不符合文檔
我有簡單的工廠接口:
public interface ICameraFactory
{
ICameraController GetNikonCamera();
ICameraController GetCanonCamera();
}
我綁定它作爲一個工廠:
IKernel kernel = new StandardKernel();
kernel.Bind<ICameraFactory>().ToFactory();
當我嘗試轉換:
kernel.Bind<ICameraController>().To<NikonCameraController>()
.Named("NikonCamera");
到:
kernel.Bind<ICameraController>().To<NikonCameraController>()
.NamedLikeFactoryMethod<ICameraFactory>(f => f.GetNikonCamera());
它不能編譯。
例如,該代碼被編譯(但它的可怕):
kernel.Bind<ICameraController>()
.ToMethod<ICameraController>(c=>new NikonCameraController())
.NamedLikeFactoryMethod<ICameraController, ICameraFactory>(f => f.GetNikonCamera());
我在做什麼錯? Ninject 3.0.1.10
Ninject.Extension.Factory 3.0.1.0
編譯錯誤:https://dl.dropbox.com/u/21806986/Screenshots/shot_19072012_133454.png
謝謝你的答案,但我嘗試過了,也沒有工作。我有這樣的編譯錯誤: https://dl.dropbox.com/0/0view/23e0vwi9fnjtx5b/Apps/CloudShot/shot_19072012_180915.png – 2012-07-19 14:07:26
但它的工作: 'kernel.Bind()。ToMethod < ICameraController>(X =>新NikonCameraController())NamedLikeFactoryMethod (F => f.GetCanonEOSCamera());' 其中: '公共類NikonCameraController:ICameraController { //一些實施 }' –
2012-07-19 14:13:50
Sry記錯了。第一個通用參數是實現類型(NikonCameraController)而不是接口類型。但是這種類型有更好的語法。查看更新的答案。 – 2012-07-19 14:26:16