我有一個簡單的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」的類,它與某些其他方面有衝突嗎? –