我有一个 Entity Framework Core 拦截器,它必须获取如下声明的配置:
builder.Services.Configure<AppConfig>(builder.Configuration.GetSection("AppConfig"));
我在注册拦截器时遇到了困难,因为我无法AppConfig
在覆盖时使用OnConfiguring
。
我找到了一种在配置服务时添加它的方法,并按照这个 SO 问题进行操作。该解决方案在这里不起作用,因为(我推测)AppConfig
只有在构建后才会创建。
var someInterceptor = new SomeInterceptor(/*this takes AppConfig as an argument*/);
builder.Services.AddSingleton(someInterceptor);
....AddInterceptors(someInterceptor);
我该怎么做? 是否可以将其注入拦截器?
实际上,在更现代的时代(带有 ConfigurationManager 的 .NET6+),您不需要构建配置来从中获取值。您只需:
话虽如此,在您链接的博客文章中,使用了一种更清晰的方法 -
如果您创建了拦截器的依赖项
IOptions<AppConfig>
(或另一个适合您的用例的具有适当生命周期的选项模式类型),它将得到正确解析。