.net 依赖注入 基本原理学习

实例化带参数类

如果一个类,在初始化时需要带一个参数,则在注册时使用AddScopedAddTransientAddSingleton的回调函数。

services.AddScoped<IConfigService>(s=>new TxtConfigServer() { FileName = "mail.ini"});

使用扩展方法注册

在注册时需要使用AddScopedAddTransientAddSingleton这三个方法来注册,如果一个功能需要注册很多个服务,则对调用者来说是一件很麻烦的事情,其中有一个服务未注册则会导致失败。
这时候如果可以把这些服务封装成一个方法,调用者直接.Add,不需要关心都注册哪些服务,就会很方便。
这种行为可以用扩展方法来实现。

1. 首先创建一个静态类,将静态类的命名空间改为Microsoft.Extensions.DependencyInjection,然后创建一个静态方法,扩展ServiceCollection
namespace Microsoft.Extensions.DependencyInjection
{
    public static class TxtConfigServerRegister
    {
		// 调用者需要传入 fileName参数
        public static void AddTxtConfig(this ServiceCollection services,string fileName)
        {
            services.AddScoped<IConfigService>(s=>new TxtConfigServer() { FileName = fileName });
        }
    }
}
2. 调用者直接.AddTxtConfig即可注册服务
ServiceCollection services = new ServiceCollection();
services.AddTxtConfig("mail.ini");
posted @   Simian_2018_12_22  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示