发布一个Visual Studio 2022 插件,可以自动完成构造函数依赖注入代码
赖注入(DI)在开发中既是常见的也是必需的技术。它帮助我们优化了代码结构,使得应用更加灵活、易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量。不过,手动注入依赖项也可能会成为我们开发过程中的瓶颈。
通常情况下,当我们需要注入大量依赖对象时,我们不得不在构造函数中写大量的参数注入,这不仅会让构造函数变得形式化、冗长,还可能导致人误(手误)或各种错误。为了让依赖注入的流程更为智能和高效,我将自己的经验结合技术要求,开发了一个Visual Studio的插件,简单易用、解决了许多构造函数参数申明的问题。
该插件能够快速将构造函数参数,赋给类的局部私有变量,提升了编写依赖注入(DI)的效率,简化了代码的编写过程。开发人员只需要将光标放置于构造函数内部,按下快捷键即可完成参数赋值和定义私有变量。
示例:原始代码
public class TestClass
{
public TestClass(ILogger<TestClass> logger , IServiceProvider serviceProvider)
{
}
}
把光标定在class内部,按下 ALT + 0 快捷键,自动变成下面这样:
public class TestClass
{
ILogger<TestClass> _logger;
IServiceProvider _serviceProvider;
public TestClass(ILogger<TestClass> logger, IServiceProvider serviceProvider)
{
this._logger = logger;
this._serviceProvider = serviceProvider;
}
}
如果是按下 ALT + 9 快捷键,私有变量会采用readonly修饰:
public class TestClass
{
readonly ILogger<TestClass> _logger;
readonly IServiceProvider _serviceProvider;
public TestClass(ILogger<TestClass> logger, IServiceProvider serviceProvider)
{
this._logger = logger;
this._serviceProvider = serviceProvider;
}
}
安装方法:
在vs2022的【扩展】-》【管理扩展】,直接搜索安装 DependencyInjectionVsix2022
源码:
https://e.coding.net/IWay2018/public/DependencyInjectionVsix2022.git
发布一个Visual Studio 2022 插件,可以自动完成构造函数依赖注入代码的更多相关文章
- 微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版
微软今天发布了Visual Studio 2022 最接近正式发布的RC版本,同时宣布在11月8日发布正式版,届时将在线上发布虚拟的发布活动,具体参见:https://devblogs.microso ...
- 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5
Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...
- Code Runner,率先支持刚发布的 Visual Studio 2022!
Visual Studio 被不少网友成为"宇宙第一IDE".但是,我写✍ PHP.Java 和 C#,也都是用的 VS Code. 我所在的组,是 Visual Studio C ...
- Visual Studio 常用插件
一.IndentGuide 缩进线插件:每个缩进块首尾添加虚线,使代码看着整洁. 其他插件:继续推荐几款VisualStudio的插件 二.CodeRush code rush 是微软推出的一款VS2 ...
- 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!
美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...
- .NET 6.0.6 和 .NET Core 3.1.26、Visual Studio 2022 17.2 和 17.3 Preview 2 和 .NET 7.0 Preview 5 同时发布
Microsoft 昨天发布了适用于 .NET 6.0.6 和 .NET Core 3.1.26.NuGet.Visual Studio 2019 和 Visual Studio 2022 17.2 ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
- Visual Studio 2022 Community 不完全攻略
0. 前言 建议结合视频阅读哦 Visual Studio 2022 Community 不完全攻略 有问题或者意见欢迎评论 ! 1. 下载&安装 Visual Studio Communit ...
- 免费的Visual Studio的插件
在做了深入(的)研究之后(通过在google网站搜索),,我编译了15个免费Visual Studio 2005插件表..其中一些插件将提高您(的)代码(的)质量,,另外一些能使您编译(的)更快,,但 ...
- 令人惊叹的Visual Studio Code插件
vscode是一款开源且优秀的编辑器,接下来让我吐血推荐一下我工作使用过的令人惊叹的Visual Studio Code插件. 代码编辑插件 vscode-color-highlight ------ ...
随机推荐
- kubernetes(k8s)中部署 efk
Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合. Elasticsearch ...
- window安装openslide库
下载openslide二进制文件: 链接:https://openslide.org/download/ 将下载好的ZIP文件解压到Anaconda的Library目录下(你也可以选择自己喜欢的目录 ...
- Generative Pre-trained Transformer(GPT)模型技术初探
一.Transformer模型 2017年,Google在论文 Attention is All you need 中提出了 Transformer 模型,其使用 Self-Attention 结构取 ...
- Spring Boot 中使用 Redis
Redis 环境 redis 安装.配置,启动:(此处以云服务器上进行说明) 下载地址:https://redis.io/download/ 下载后上传到云服务器上,如 /usr/local 中 gc ...
- python+folium
建模时无意中发现了一个很好用的交互式画地图的库!!
- 容易忽视的细节:Log4j 配置导致的零点接口严重超时
作者:vivo 互联网服务器团队- Jiang Ye 本文详细的记录了一次0点接口严重超时的问题排查经历.本文以作者自身视角极具代入感的描绘了从问题定位到具体的问题排查过程,并通过根因分析并最终解决问 ...
- 深度学习-08(PaddlePaddle文本分类)
深度学习-08(PaddlePaddle文本分类) 文章目录 深度学习-08(PaddlePaddle文本分类) NLP概述 NLP基本概念 什么是NLP NLP的主要任务 传统NLP方法 传统NLP ...
- Centos7安装JDK1.8详细步骤
JDK 解压JDK安装文件.在终端中,进入你下载的JDK安装文件所在的目录,然后执行以下命令: tar -zxvf jdk-<版本号>-linux-x64.tar.gz 其中,<版本 ...
- 推荐一个.Net Core开发的Websocket群聊、私聊的开源项目
今天给大家推荐一个使用Websocket协议实现的.高性能即时聊天组件,可用于群聊.好友聊天.游戏直播等场景. 项目简介 这是一个基于.Net Core开发的.简单.高性能的通讯组件,支持点对点发送. ...
- EasyExcel自适应列宽
import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Head; import com. ...