架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 25|回复: 0

[技巧] .NET/C# 依赖注入之服务注册 Scrutor 工具

[复制链接]
发表于 昨天 09:37 | 显示全部楼层 |阅读模式
需求:当项目比较大,并且书写语法非常规范的时候,当我们添加一个接口,需要手动在 IServiceCollection 容器中添加,从而可以在构造函数中注入该接口,每次新增添加到 IServiceCollection 都比较麻烦,而且,如果忘记添加,在依赖注入获取的时候会异常,程序报错。Scrutor 工具就非常方便根据我们的规则配置帮我们自动添加。

Scrutor

Microsoft.Extensions.DependencyInjection 的程序集扫描和装饰扩展。

源码地址:超链接登录可见。

回顾

回顾一下服务注册,单例注入的三种写法,如下:

服务注册

假设你有如下代码结构:

// 接口定义
public interface IUserService { }
public interface IOrderService { }

// 实现类
public class UserService : IUserService { }
public class OrderService : IOrderService { }

之前

需求一个一个注册,代码如下:

或者自己自己写个方法,通过反射进行注册(其实 Scrutor 也是通过反射),如下:

之后

使用 Scrutor 可以非常方便地进行程序集扫描注册,尤其适用于自动注册多个服务类(如 UserService 注册为 IUserService)。包依赖如下:

代码如下:

解释:
  • .FromAssemblyOf<UserService>():指定要扫描的程序集。
  • .AddClasses():扫描程序集中的所有类。
  • .AsImplementedInterfaces():自动注册这些类为它们所实现的接口。
  • .WithScopedLifetime():设置生命周期为 Scoped,也可以是 WithTransientLifetime() 或 WithSingletonLifetime()。

(完)




上一篇:.NET/C# 基于 ImageMagick、GhostScript 将 PDF 转成图片
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-9-5 00:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表