gpt4 book ai didi

c# - ASP.NET Core - DI - 使用 Action 或 IOption

转载 作者:行者123 更新时间:2023-11-30 21:35:05 25 4
gpt4 key购买 nike

我试图了解使用 IOptions<T> 之间的区别和 Action<T>什么时候用什么。

我有一个库正在使用 IServiceCollection 的扩展方法我需要在哪里配置我的服务以及配置 EF DbContext .

示例:

namespace Microsoft.Extensions.DependencyInjection 
{
public static void AddModule(this IServiceCollection services, IOptions<SomeOptionsClass> options) {
services.AddDbContext<MyContext>(contextOptions => contextOptions.UseSqlServer(SomeOptionsClass.ConnectionString));
}
}

我如何获得 ConnectionString SomeOptionsClass 中的属性值?

最佳答案

不确定为什么需要 IOptions<T>在这里。

应该能够在启动期间从配置 (appsetting) 获取连接字符串。 IOptions<T>通常用于将设置注入(inject)类

我建议简化 API 以期待连接字符串

namespace Microsoft.Extensions.DependencyInjection  {
public static void AddModule(this IServiceCollection services, string connectionString) {
services.AddDbContext<MyContext>(contextOptions => contextOptions.UseSqlServer(connectionString));
}
}

这将使用户在配置模块时更加灵活。

例如,在组合根中的配置服务中,您可以访问配置并提取连接字符串以根据需要使用

//...

services.AddModule(Configuration["Appsettings Key Here"]);

关于c# - ASP.NET Core - DI - 使用 Action<T> 或 IOption<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49535559/

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