標籤:
Autofac具有解耦、管理生命週期等等好處,本文僅僅實現一個簡單的控制器注入。
1、建立Asp.Net WebApi 應用程式(我用的是VS2013)。
2、通過Nuget下載如下三個packet。
1 <package id="Autofac" version="3.5.2" targetFramework="net45" />2 <package id="Autofac.Mvc5" version="3.3.3" targetFramework="net45" />3 <package id="Autofac.WebApi2" version="3.4.0" targetFramework="net45" />
3、建立一個類管理注入
public class ContainerConfig { public static void Register(HttpConfiguration config) { var builder = new ContainerBuilder(); builder.RegisterApiControllers(Assembly.GetExecutingAssembly());//註冊api容器的實現 builder.RegisterControllers(Assembly.GetExecutingAssembly());//註冊mvc容器的實現 //ILog 介面的注入 builder.RegisterType<LogOne>().As<ILog>(); builder.RegisterType<LogTwo>().Named<object>("logTwo").As<ILog>();//註冊參數名為logTwo的Ilog型別參數。Named<T> 這個T不知道起到什麼作用,在這裡object、LogTwo和ILog均可以。 IContainer container = builder.Build(); config.DependencyResolver = new AutofacWebApiDependencyResolver(container);//註冊api容器需要使用HttpConfiguration對象 DependencyResolver.SetResolver(new AutofacDependencyResolver(container));//註冊MVC容器 } }
4、在WebApiConfig中調用ContainerConfig.Register 並傳入參數。
5、上面就對Controller進行的注入託管。在Controller中我們可以添加我們需要的參數了。
public class ValuesController : ApiController { public ValuesController(ILog logTwo, ILog log) { if (logTwo is LogTwo && log is LogOne) { } } }
Autofac 注入Asp.Net Webapi And MVC