我正在尝试了解使用PartyB - 15
PartyC - 12
PartyA - 9
PartyE - 5
PartyD - 3
和IOptions<T>
以及何时使用内容之间的差异。
我有一个库使用Action<T>
的扩展方法,我需要配置我的服务以及配置EF IServiceCollection
。
示例:
DbContext
如何从namespace Microsoft.Extensions.DependencyInjection
{
public static void AddModule(this IServiceCollection services, IOptions<SomeOptionsClass> options) {
services.AddDbContext<MyContext>(contextOptions => contextOptions.UseSqlServer(SomeOptionsClass.ConnectionString));
}
}
获取ConnectionString
属性值?
答案 0 :(得分:3)
不确定为何需要IOptions<T>
。
应该能够在启动期间从配置( appsetting )获取连接字符串。 IOptions<T>
通常用于将设置注入类
我建议简化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"]);