Lea*_*ner 7 c# dependency-injection asp.net-core asp.net-core-3.1
在我的 ASP.NET Core 3.1 应用程序中,我想在最后做一些设置,因为它们依赖于仅在 Startup.cs 中注册的一些其他服务。有人可以帮助我理解为什么我的类实现IPostConfigureOptions<T>.NET Core 永远不会调用吗?
我有一个Options这样的课程:
public class MyTestOptions
{
public string TestTest { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这在Startup.cs的ConfigureServices方法中像往常一样使用。
services.Configure<MyTestOptions>(o => { o.TestTest = "Test Test Test"; });
Run Code Online (Sandbox Code Playgroud)
我需要“最后”更改一些设置。所以,我实现了IPostConfigureOptions<T>接口。实现类看起来像这样。(以下代码段中未显示 PostConfigure 方法)。
public class MyTestPostConfigure : IPostConfigureOptions<MyTestOptions>
Run Code Online (Sandbox Code Playgroud)
然后将其注册到Startup.cs的ConfigureServices方法中,如下所示。
services.ConfigureOptions<MyTestPostConfigure>();
Run Code Online (Sandbox Code Playgroud)
我也尝试以不同的方式注册 PostConfig 类。
services.AddSingleton<IPostConfigureOptions<MyTestOptions>, MyTestPostConfigure>();
Run Code Online (Sandbox Code Playgroud)
但是,无论如何PostConfigure都不会调用 。我错过了什么吗?**
Lea*_*ner 14
感谢@KirkLarkin 在对我的问题的评论中提供的意见。
未调用该类PostConfigure的方法MyTestPostConfigure,因为我没有访问MyTestOptions应用程序中任何位置的属性。
我已将其作为依赖项注入IOptions<MyTestOptions>到我的一个类中,这就是MyTestPostConfigure调用该类的构造函数的原因。但是,由于我没有使用MyTestOptions类中的任何内容,因此 .NET Core 没有调用PostConfigure方法。
一旦访问了类TestTest的属性MyTestOptions,我就看到 .NET Core 执行了Configure和PostConfigure.
简而言之,and的执行是按需的,并且会延迟到您“实际使用”这些属性为止;仅将其作为依赖项注入并不会使 .NET Core DI 调用和方法。Configure<TOptions>IPostConfigureOptions<TOptions>TOptionsConfigurePostConfigure
(我不知道按需配置在任何地方都有记录,或者我完全错过了这个基本的事情..)
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |