[英]ASP.NET Core - DI - Using Action<T> or IOption<T>
我試圖了解使用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));
}
}
如何從SomeOptionsClass
獲取ConnectionString
屬性值?
不知道為什么在這里需要IOptions<T>
。
啟動期間應該能夠從Configuration( appsetting )獲取連接字符串。 IOptions<T>
通常用於將設置注入類
我建議簡化API以期望連接字符串
namespace Microsoft.Extensions.DependencyInjection {
public static void AddModule(this IServiceCollection services, string connectionString) {
services.AddDbContext<MyContext>(contextOptions => contextOptions.UseSqlServer(connectionString));
}
}
這將使用戶在配置模塊時具有更大的靈活性。
例如,在組合根目錄中的configure services中,您可以訪問配置並提取連接字符串以根據需要使用
//...
services.AddModule(Configuration["Appsettings Key Here"]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.