栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

如何在 ASP.Net Web Forms 中使用依赖注入

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在 ASP.Net Web Forms 中使用依赖注入

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

在 .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 中使用依赖注入可以轻松创建对象,然后在运行时获取依赖,可让你轻松构建灵活,松散的应用程序。

更多高质量干货:参见我的 GitHub: [csharptranslate] github.com/ctripxchuang/csharptranslate

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号