快捷搜索:

如何避免ASP NET Core中的冗余DI代码?

如何避免ASPNETCore中的冗余DI代码?

  asp encode使用Core或ASP.NET Core MVC处理Web应用程序中的控制器时,您可能会遇到代码冗余。比如说,可能遇到过使用依赖项注入(DI)来注入所需服务的控制器。如果注入依赖项的代码在多个控制器中被重用,就存在代码冗余,并违反DRY原则。

  本文着重介绍DI代码冗余,并介绍如何构建自定义基本控制器以避免此类问题。要使用本文中提供的代码示例,应该在系统中安装Visual Studio 2019。如果您还没有安装,可以在此处下载Visual Studio 2019。

  8. 在随后显示的“额外信息”窗口中,从顶部的下拉列表中选择.NET 5.0作为目标框架。任由“身份验证类型”处于“无”(默认)的状态。

  9. 确保“启用Docker”asp技术、“为HTTPS配置”和“启用Razor运行时编译”等复选框未被勾选,因为我们不会在这里使用任何这些功能。

  将创建一个新的ASP.NET Core MVC项目。我们将在本文的后续部分中使用这个项目来处理依赖项注入。

  我们在ASP.NET Core中创建新的API控制器类时,它默认扩展ControllerBase类。接下来,我们将创建基本控制器的实现。我们的基本控制器类将扩展框架的ControllerBase 类。

  现在您可以创建控制器,只需从我们刚创建的这个自定义基本控制器来推导。下列代码片段表明了您如何通过刚创建的基本控制器类加以扩展来创建控制器类。

  该错误表明,您需要使用与BaseController类构造函数相同的参数实现另一个参数构造函数。但为什么?如果您要在扩展所创建的基本控制器类的所有控制器中复制依赖项注入代码,也就失去了扩展类的目的。

  作为Core请求的一部分而存在的服务可通过HttpContext.RequestServices集合来访问。这意味着当您请求服务时,将从该集合解析请求。

  就是这样!OrderController可利用Logger实例,并利用构造函数注入来注入其他服务。

  最好使用参数化的构造函数来解析依赖项,比如通过使用构造函数注入。这将帮助您创建更易于测试和维护的类。

您可能还会对下面的文章感兴趣: