Ninject的自动接线

Tib*_*Tib 5 ninject inversion-of-control

一些IOC容器具有基于约定的所谓自动布线,例如,IProductRepository映射到ProductRepository而无需任何手动布线.

Ninject有这样的事吗?

Fer*_*ndo 7

// use Ninject.Extensions.Conventions for convention-based binding
kernel.Scan(scanner =>
    {
        // look for types in this assembly
        scanner.FromCallingAssembly();

        // make ISomeType bind to SomeType by default (remove the 'I'!)
        scanner.BindWith<DefaultBindingGenerator>();
    });
Run Code Online (Sandbox Code Playgroud)

复制自@Pete Montgomery评论


Rem*_*oor 7

Ninject附带了基于约定的配置的扩展.但是你仍然需要配置你的规范.请参阅https://github.com/ninject/ninject.extensions.conventions 3.0.0的语法已更改,但功能更强大.以下内容将为系统中的所有类添加绑定.但通常你想要不同种类的几种约定(例如服务是单身,......)

kernel.Bind(
    x => x.FromThisAssembly()
          .SelectAllClasses()
          .BindAllInterfaces());
Run Code Online (Sandbox Code Playgroud)