代码之家  ›  专栏  ›  技术社区  ›  Jonathan Wood

何时使用Configure()设置依赖项注入

  •  0
  • Jonathan Wood  · 技术社区  · 1 年前

    我理解 AddTransient() , AddScoped() AddSingleton() 配置服务时。但我很难找到关于 Configure() .

    我似乎可以互换使用它们。我看到的唯一真正的区别是,当你使用 Configure() ,你必须处理这个有点烦人的问题 IOptions 组成部分

    关于我应该何时使用,有硬性规定吗 Configure() 而不是任何 Add... 方法?有人能链接到一篇关于这方面的好文章吗。(每次我在谷歌上搜索时,我都会讨论 AddTransient() , AddScoped() AddSingleton() .)

    0 回复  |  直到 1 年前
        1
  •  2
  •   Denis Micheal    1 年前

    已更新


    OP的问题实际上在 service.Configure<> vs AddTransient() , AddScoped() AddSingleton() .

    我只是补充一下 answer .

    service.Configure

    注册TOptions将绑定的配置实例, 并且当配置改变时更新选项。

    它用于将配置的一部分绑定到强类型对象。它允许您通过将配置节绑定到表示这些选项的类的实例来定义选项。

    从…起 source ,你会看到这种方法最终会做以下事情:

    • 添加 IOptionsSnapshot<> 使用寿命范围的服务。
    • 添加 IOptionsMonitor<> Singleton终身服务。
    • 添加 IOptionsFactory<> 终身瞬态服务。
    • 添加 IOptionsMonitorCache<> 与辛格尔顿的一生。
    • 添加 IOptions<> DI容器的Singleton寿命。

    就使用而言 AddTransient AddScoped 要添加 IOptions<TOptions> 是不可取的,如果您想阅读配置更改,请查看 IOptionsMonitor , IOptionsSnapshot