如何在ASP.Net Web窗体中使用依赖项注入

依赖注入是一种将一个对象(依赖项)传递给需要它的另一个对象的技术。 依赖注入是控制原理颠倒的一种实现,它促进了松耦合,并促进了可测试性和维护性。 依赖项注入原理指出,应用程序中的高级模块不应依赖于低级模块。 相反,两者都应依赖抽象。

.NET Framework 4.7.2中引入了对依赖项注入的支持。 此支持使您可以利用ASP.Net Web Forms应用程序中依赖项注入的好处。 本文讨论了如何在ASP.Net Web窗体中使用依赖项注入。

[Microsoft .Net 5将.Net Framework和.Net Core结合在一起:了解.Net Standard和.Net Core的合并对开发人员意味着什么 | 从InfoWorld的Microsoft Architect博客中了解如何从.Net Framework和.Net Core中获得最大收益。 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

创建一个ASP.Net Web窗体项目

首先,让我们在Visual Studio中创建一个ASP.Net Core项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建新的ASP.Net Web窗体项目。

  1. 启动Visual Studio 2019 IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“ ASP.Net Web应用程序(.Net Framework)”。
  4. 确保在屏幕底部的下拉控件中将.Net Framework版本指定为“ .Net Framework 4.7.2”。
  5. 单击创建。
  6. 在接下来显示的“创建新的ASP.Net Web应用程序”窗口中,选择“ Web窗体”作为项目模板。
  7. 确保未选中“ Docker支持”,“ MVC”和“ Web API”复选框,因为我们此处将不使用这些功能。
  8. 确保将身份验证设置为“无身份验证”,因为我们也不会使用身份验证。
  9. 单击创建。

这将在Visual Studio中创建一个新的ASP.Net Web窗体项目。 我们将在以下各节中使用该项目来演示如何在ASP.Net Web Forms应用程序中进行依赖项注入。

在ASP.Net Web窗体中使用依赖项注入之前,需要确保您的项目面向.Net Framework 4.7.2或更高版本。 如果在早期版本的.Net Framework中创建了项目,则可以将项目重新定位到.Net Framework 4.7.2。 您可以通过编辑项目属性或通过在web.config文件中指定目标框架来执行此操作,如下所示。

<system.web>
    <compilation debug="true" targetFramework="4.7.2" />
    <httpRuntime targetFramework="4.7.2" />
...
</system.web>

下一步是安装AspNet.WebFormsDependencyInjection.Unity NuGet包。 选择在上一节中创建的项目,然后右键单击并通过NuGet软件包管理器安装AspNet.WebFormsDependencyInjection.Unity。 接受安装过程中可能会提示您的任何许可协议。 或者,您也可以通过在NuGet软件包管理器控制台中输入以下命令来安装此软件包。

Install-Package AspNet.WebFormsDependencyInjection.Unity

在ASP.Net Web窗体中创建实体类和接口

首先,让我们创建以下名为Author的实体类。

public class Author
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

接下来,我们将创建一个名为IAuthorRepository的接口,并插入以下代码。

public interface IAuthorRepository
    {
        bool Create(Author author);
        Author Read(int id);
        List<Author> 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<Author> Read()
        {
            throw new System.NotImplementedException();
        }
    }

创建一个容器并注册类型

假设您如上所述在项目中安装了必要的NuGet软件包,下一步是创建Unity依赖项注入容器并注册我们要使用的类型。 以下代码可用于创建Unity容器。

var container = this.AddUnity();

您可以使用Unity容器很容易地在Application_Start事件处理程序中解析对对象的依赖关系,如以下代码片段所示。

container.RegisterType<IAuthorRepository, AuthorRepository>();

请注意,您必须在应用程序中包含以下两个名称空间,以上代码才能起作用。

  • AspNet.WebFormsDependencyInjection.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<IAuthorRepository, AuthorRepository>();
            // Code that runs on application startup
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

在ASP.Net Web表单中使用依赖项注入

要利用Web窗体中的依赖项注入,可以使用构造函数注入,如下面的代码片段所示。

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

注意使用参数构造函数在运行时传递依赖关系。

使用.Net Framework 4.7.2,可以通过Unity在ASP.Net Web窗体应用程序中使用依赖项注入。 Unity Application Block是轻量级的依赖项注入容器。 您可以在ASP.Net页面,控件,处理程序,模块等中使用依赖项注入。利用ASP.Net Web窗体中的依赖项注入来简化对象的创建,在运行时传递依赖项以及构建灵活的,松散耦合的应用程序。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值