某些IOC容器具有基于约定的自动布线,例如,IProductRepository映射到ProductRepository而无需您手动连接。
Ninject有这样的事吗?
答案 0 :(得分: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>();
});
从@Pete Montgomery评论中复制
答案 1 :(得分:7)
Ninject附带了基于约定的配置的扩展。但是你仍然需要配置你的规范。请参阅https://github.com/ninject/ninject.extensions.conventions 3.0.0的语法已更改,但功能更强大。以下内容将为系统中的所有类添加绑定。但通常你想要不同种类的几种约定(例如服务是单身,......)
kernel.Bind(
x => x.FromThisAssembly()
.SelectAllClasses()
.BindAllInterfaces());