文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在ASP.Net Web Forms中使用依赖注入的步骤

2024-04-02 19:55

关注

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

.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 做如下设置。


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

接下来就可以通过 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<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();
  }
 }

创建容器和类型注册

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


var container = this.AddUnity();

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


container.RegisterType<IAuthorRepository, AuthorRepository>();

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

下面是 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);
  }
 }
}

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

以上就是在ASP.Net Web Forms中使用依赖注入的步骤的详细内容,更多关于ASP.Net Web Forms中使用依赖注入的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯