簡體   English   中英

ASP.NET Core-DI-使用操作 <T> 或IOption <T>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM