我有一个接口IAdapdor
,以及几个具体的实现。使用Ninject 3.0,我将它们全部按名称绑定:
IKernel kernel = new StandardKernel();
kernel.Bind<IAdapdor>().To<Adaptor1>().Named("Adaptor1");
kernel.Bind<IAdapdor>().To<Adaptor2>().Named("Adaptor2");
...
如何使用Ninject conventions extension实现此目的?
更具体地说,我正在寻找一些内容:
kernel.Bind(x => x.FromThisAssembly()
.SelectAllClasses()
.InheritedFrom<IAdapdor>()
.BindByClassName()); // <-- BindByClassName() does not really exist
答案 0 :(得分:1)
您可以使用Configure
method自定义约定创建的绑定。因此,您可以使用它来使用Named
注册绑定:
kernel.Bind(x => x
.FromThisAssembly()
.SelectAllClasses().InheritedFrom<IAdapdor>()
.BindAllInterfaces()
.Configure((b, c) => b.Named(c.Name)));