对给定代码使用 Ninject 3.0
本文关键字:Ninject 代码 | 更新日期: 2023-09-27 18:31:01
我正在尝试将此代码从 DI autofac 重写为 Ninject 3.0.0.15。
我对方法有问题:AsImplementInterfaces(...)和AsClosedTypesOf(...)
builder.RegisterAssemblyTypes(typeof(CategoryRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces()
.InstancePerHttpRequest();
Assembly services = Assembly.Load("EFMVC.Domain");
builder.RegisterAssemblyTypes(services)
.AsClosedTypesOf(typeof(ICommandHandler<>)).InstancePerHttpRequest();
builder.RegisterAssemblyTypes(services);
该代码是非常好的演示Web应用程序的一部分,用于演示MVC 4和EF 4.3 Code First ASP.NET Windows Azure和体系结构实践:EFMVC
感谢您的回答!
使用 Ninject.Extensions.Conventions V3.0.0
我认为这就是您要找的:
kernel.Bind(x => x
.FromAssemblyContaining<CategoryRepository>()
.SelectAllClasses().EndingWith("Repository")
.BindAllInterfaces()
.Configure(b => b.InRequestScope());
kernel.Bind(x => x
.From("EFMVC.Domain")
.SelectAllClasses().InheritedFromAny(typeof(ICommandHandler<>))
.BindAllInterfaces()
.Configure(b => b.InRequestScope());