对给定代码使用 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 3.0

使用 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());