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