gpt4 book ai didi

c# - ASP.NET Core 3.1 不在实现 IPostConfigureOptions 的类上调用 PostConfigure

转载 作者:行者123 更新时间:2023-12-03 13:37:35 24 4
gpt4 key购买 nike

在我的 ASP.NET Core 3.1 应用程序中,我想在最后做一些设置,因为它们仅依赖于在 Startup.cs 中注册的其他一些服务。有人可以帮助我理解为什么我的类(class)实现 IPostConfigureOptions<T> .NET Core 从未调用过?
我有一个 Options像这样的类:

public class MyTestOptions
{
public string TestTest { get; set; }
}
这用于 Startup.csConfigureServices方法如常。
services.Configure<MyTestOptions>(o => { o.TestTest = "Test Test Test"; });
我需要在“最后”更改一些设置。所以,我实现了 IPostConfigureOptions<T>界面。实现类如下所示。 (下面的代码段中未显示 PostConfigure 方法)。
public class MyTestPostConfigure : IPostConfigureOptions<MyTestOptions>
然后在 Startup.cs 中注册。的 ConfigureServices方法如下图。
services.ConfigureOptions<MyTestPostConfigure>();
我也尝试以不同的方式注册 PostConfig 类。
services.AddSingleton<IPostConfigureOptions<MyTestOptions>, MyTestPostConfigure>();
但是,无论如何 PostConfigure不叫。
我错过了什么吗?
**
  • 为什么 PostConfigure 永远不会执行?
  • 不是所有的 IPostConfigureOptions 在启动期间都会自动执行吗?或者是否存在 .NET Core 选择在实际需要之前不运行它的情况?**
  • 最佳答案

    感谢@KirkLarkin 在对我的问题的评论中提供的意见。PostConfigure MyTestPostConfigure 上的方法没有调用类,因为我没有访问 MyTestOptions 的属性在我的应用程序的任何地方。
    我注入(inject)了IOptions<MyTestOptions>作为我的一个类中的一个依赖项,这就是 MyTestPostConfigure 的构造函数的原因被称为。但是,由于我没有使用 MyTestOptions 中的任何内容类,.NET Core 没有调用 PostConfigure方法。
    只要访问TestTest MyTestOptions 的属性(property)类,我看到 .NET Core 执行了 ConfigurePostConfigure .
    简而言之, Configure<TOptions> 的执行和 IPostConfigureOptions<TOptions>是按需提供的,它会延迟到您“实际使用”TOptions特性;仅将其作为依赖项注入(inject)不会使 .NET Core DI 调用 ConfigurePostConfigure方法。
    (我不知道任何地方都记录了按需配置,或者我完全错过了这个基本的东西......)

    关于c# - ASP.NET Core 3.1 不在实现 IPostConfigureOptions<T> 的类上调用 PostConfigure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63377013/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com