我有一个简单的AutoFac示例工作,但现在想要将其应用于我的web api项目并在图层之间有正确的分隔。AutoFac MVC Web API
我看到的问题是标准的控制器x“不具有默认构造函数”,但我难倒以便在征求意见..
我打电话RegisterApiControllers以及RegisterControllers ..
这就是我在我的DependencyInjectionContainer
public static class DependencyInjectionContainer
{
public static ContainerBuilder Builder;
public static IContainer Container;
public static void Init(Assembly mainAssembly)
{
Builder = new ContainerBuilder();
var config = GlobalConfiguration.Configuration;
RegisterTypes(mainAssembly);
Container = Builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(Container);
DependencyResolver.SetResolver(new AutofacDependencyResolver(Container));
}
private static void RegisterTypes(Assembly mainAssembly)
{
var roomBookingConnectionString = ConfigurationManager.ConnectionStrings["RoomBooking"].ConnectionString;
Builder.RegisterControllers(mainAssembly);
Builder.RegisterType<RoomRepository>().As<IRoomRepository>().WithParameter(new TypedParameter(typeof(string), roomBookingConnectionString));
Builder.RegisterType<RoomService>().As<IRoomService>();
Builder.RegisterApiControllers(mainAssembly);
Builder.RegisterFilterProvider();
}
}
我在我的Global.asax.cs
调用此3210这里的一个大的假设是,这是正确的...
Builder.RegisterApiControllers(mainAssembly);
编辑-------------------------- -------------------------------------------
我刚才尝试将上述两种方法中的所有DI注册等都移回到global.asax.cs中,并且它可以工作!?!?
我认为它与'RegisterApiControllers'有关。我使用'typeof(MvcApplication).Assembly'将调用程序集传递给上述init方法。这有什么问题吗?
谢谢。
我想我有这个工作。我不确定,但我认为这是因为我有一个名为“DependencyInjection”的类,它与某些其他方面有冲突吗? –