私の単純な例には小さな問題があります。
私はシンプルな工場インターフェースを持っています:
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