博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在 Web Forms 中引入依赖注入机制
阅读量:4036 次
发布时间:2019-05-24

本文共 2944 字,大约阅读时间需要 9 分钟。

依赖注入技术就是将一个对象注入到一个需要它的对象中,同时它也是控制反转的一种实现,显而易见,这样可以实现对象之间的解耦并且更方便测试和维护,依赖注入的原则早已经指出了,应用程序的高层模块不依赖于低层模块,而应该统一依赖于抽象或者接口。

.Net Framework 4.7.2 中引入了对依赖注入的支持,终于在 ASP.Net Web Forms 中可以使用依赖注入机制了,这篇文章将会讨论如何在 ASP.Net Web Forms 中去使用。

创建 WebForm 项目

在 ASP.Net Web Forms 中使用依赖注入,一定要记得将项目框架设为 4.7.2 以上,要么右键项目在属性面板上选择 4.7.2 版本。

也可以直接在 web.config 做如下设置。

    
    
...

接下来就可以通过 Nuget 安装 AspNet.WebFormsDependencyInjection.Unity 包,可以通过 Visual Studio 2019 的 NuGet package manager 可视化界面安装 或者 通过 NuGet package manager 命令行工具输入以下命令:

dotnet add package AspNet.WebFormsDependencyInjection.Unity

创建实体 和 接口

现在创建一个名为 Author 实体类 和 IAuthorRepository 接口。

    public class Author    {        public int Id { get; set; }        public string FirstName { get; set; }        public string LastName { get; set; }    }    public interface IAuthorRepository    {        bool Create(Author author);        Author Read(int id);        List
 Read();    }

然后再用 AuthorRepository 类实现一下 IAuthorRepository 接口,代码如下:

    public class AuthorRepository : IAuthorRepository    {        public bool Create(Author author)        {            throw new System.NotImplementedException();        }        public Author Read(int id)        {            throw new System.NotImplementedException();        }        public List
 Read()        {            throw new System.NotImplementedException();        }    }

创建容器和类型注册

现在我们创建 依赖注入容器,然后注入我们想要的类型,下面的代码用于创建 Unity容器

var container = this.AddUnity();

然后在 Application_Start 事件中进行对象的 依赖配置,如下代码所示:

container.RegisterType
();

对了,记的引入一下如下两个命名空间。

  • AspNet.WebFormsDependencyInjection.Unity

  • Unity

下面是 Global 类的完整代码,仅供参考。

using Microsoft.AspNet.WebFormsDependencyInjection.Unity;using System;using System.Web;using System.Web.Optimization;using System.Web.Routing;using Unity;namespace WebformsDIDemo{    public class Global : HttpApplication    {        void Application_Start(object sender, EventArgs e)        {            var container = this.AddUnity();            container.RegisterType
();            // Code that runs on application startup            RouteConfig.RegisterRoutes(RouteTable.Routes);            BundleConfig.RegisterBundles(BundleTable.Bundles);        }    }}

WebForms 使用依赖注入

现在容器,对象依赖都配置好了,接下来怎么在 Page 中用呢?可以参考下面的代码。

    public partial class _Default : Page    {        private IAuthorRepository _authorRepository;        public _Default(IAuthorRepository authorRepository)        {            _authorRepository = authorRepository;        }        protected void Page_Load(object sender, EventArgs e)        {        }    }

上面的图很明显的显示了,authorRepository 实例在运行时中已被成功注入。

在 .Net Framework 4.7.2 框架以上,终于将 依赖注入机制 带入到了 ASP.Net Web Forms 中,需要明白的是,微软自带的Unity包是一个轻量级的依赖注入容器,可以在 页面,控件,handler,module 上使用,在 ASP.Net Web Forms 中使用依赖注入可以轻松创建对象,然后在运行时获取依赖,可让你轻松构建灵活,松散的应用程序。

译文链接:https://www.infoworld.com/article/3397003/how-to-use-dependency-injection-in-aspnet-web-forms.html

转载地址:http://xfudi.baihongyu.com/

你可能感兴趣的文章
Intellij IDEA启动优化,让开发的感觉飞起来
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
Kettle链接MySQL报错:Driver class 'org.gjt.mm.mysql.Driver' could not be found
查看>>
如何优雅的编程,lombok你怎么这么好用
查看>>
一文看清HBase的使用场景
查看>>
除了负载均衡,Nginx还可以做很多,限流、缓存、黑白名单
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
慢慢欣赏linux 查看硬盘情况
查看>>
慢慢欣赏linux vsftpd的使用
查看>>
慢慢欣赏linux 思考中的问题
查看>>