0

我正在尝试将此代码从 DI autofac 重写为 Ninject 3.0.0.15。

我对方法有疑问: AsImplementedInterfaces(... )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 应用程序的一部分,用于演示 ASP.NET MVC 4 和 EF 4.3 Code First、Windows Azure 和架构实践:EFMVC

谢谢您的回答!

4

1 回答 1

3

使用 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());
于 2012-04-12T14:26:02.730 回答