标签:
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
标签:
原文地址:http://www.cnblogs.com/CanFly/p/4303900.html