Ninject Extensions Factory中的NamedLikeFactoryMethod工作在不遵守文档的情况下

时间:2012-07-19 09:31:19

标签: dependency-injection ninject ninject-extensions

我的简单例子中有一个小问题。

我有简单的工厂界面:

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

1 个答案:

答案 0 :(得分:5)

您可以使用:

this.kernel.Bind<ICameraController>()
           .To<NikonCameraController>()
           .NamedLikeFactoryMethod((ICameraFactory f) => f.GetNikonCamera());