标签:ring person arp reg 利用 允许 例子 构造函数 auto
在编程中,依赖注入是一种实现控制反转且用于解决依赖性问题的设计模式。一个依赖关系指的是可被利用的一种对象 。依赖注入是将所依赖的传递给将要使用的从属对象。该服务将会变成客户端状态的一部分并传递服务给客户端,而不允许客户端来建立或寻找服务。依赖注入使我们的编程代码变得松散耦合,易于管理。
Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个:
优点:
1.nuget安装Autofac和Autofac.WebApi2,注意版本要求
2.新建Autofac文件夹,新建组件注册类ContainerBuilerCommon来注册组件
/// <summary> /// Autofac注册类 /// </summary> public static class ContainerBuilerCommon { /// <summary> /// 注册方法 /// </summary> /// <returns></returns> public static IContainer GetWebApiContainer() { var builder = new ContainerBuilder(); // 注册webapi的所有控制器 builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); // 注册一个用于测试的组件Pserson。 builder.RegisterType<Person>(); return builder.Build(); } }
3.Global.asax文件加入以下代码配置autofac依赖注入
public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { // 获取webapi的配置 var config = GlobalConfiguration.Configuration; // 获取webapi的依赖注入容器 var container = ContainerBuilerCommon.GetWebApiContainer(); // 配置webapi的依赖注入 config.DependencyResolver = new AutofacWebApiDependencyResolver(container); GlobalConfiguration.Configure(WebApiConfig.Register); } }
1.之前我们在autofac注册类里面注册了Person类,下面我们在person类里面写一个Say方法
public class Person { public int Id { get; set; } public string Name { get; set; } public string Sex { get; set; } public int Age { get; set; } public string Say() { return "I‘m Person Class"; } }
2.在Index控制器中添加Person类的变量,并在构造函数中赋值:
protected Person _person; public IndexController(Person person) { _person = person; }
3.新建一个get请求用来测试依赖注入,如果不适用依赖注入,我们想调用Person的say方法一般是Person p=new Person();p.Say(),有了依赖注入,我们只需要下面这样。
/// <summary> /// 测试Autofac /// </summary> /// <returns></returns> [Route("autofac")] [HttpGet] public IHttpActionResult Autofac() { return Ok(_person.Say()); }
4.运行项目,测试接口,输出"I‘m Person Class"。可以看到,我们并没有New一个Person类,就实现了调用Person的Say方法,其实是容器帮我们new了。
上面的例子已经简单的实现了autofac的依赖注入,autofac的用法可总结为三步:
var builder = new ContainerBuilder();
autofac怎么注册组件可以参考官网:https://autofaccn.readthedocs.io/zh/latest/
3、生成依赖注入容器(如果是webapi则将容器传给webapi的DependencyResolver对象:
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
ASP.NET WebApi项目框架搭建(三):依赖注入之Autofac
标签:ring person arp reg 利用 允许 例子 构造函数 auto
原文地址:https://www.cnblogs.com/huguodong/p/12748845.html