c# - 在 Ninject 中按名称绑定(bind)所有具体实现

标签 c# ninject ninject-extensions

我有一个接口(interface)IAdapdor,以及几个具体的实现。使用 Ninject 3.0,我按名称绑定(bind)它们:

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

最佳答案

您可以使用 Configure method 自定义约定创建的绑定(bind).所以你可以使用它来注册你的 Named 绑定(bind):

kernel.Bind(x => x
    .FromThisAssembly()
    .SelectAllClasses().InheritedFrom<IAdapdor>()
    .BindAllInterfaces()
    .Configure((b, c) => b.Named(c.Name)));

关于c# - 在 Ninject 中按名称绑定(bind)所有具体实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21376924/

相关文章:

c# - 有谁知道一个非常好的 C# 第三方 Treeview 控件

c# - 使用 C# 构造 SOAP 信封 XML

c# - Ninject 对 MVC3 中 Action 方法参数的依赖注入(inject)

c# - NInject - WithConstructorArgument 方法,奇怪的行为或错误?

c# - 从工厂继承构造函数参数

Ninject 绑定(bind)所有工厂接口(interface)

使用 <nul 调用时 C# ReadKey 崩溃控制台应用程序

c# - 无法从 sitecore 找到定位框架/模态对话框并在其中执行操作

c# - Ninject 3 如何影响对象的生命周期?

c# - 使用 Ninject 将当前用户注入(inject)我的域