[英]How do i reference a singleton instance i'm adding in the HostBuilder, as a part of a Scoped instance i'm defining?
我可能在這里咆哮錯誤的樹,但是,我有以下內容:
var host = new HostBuilder()
.ConfigureServices(services =>
{
services.AddSingleton<IHttpClientFactory>();
services.AddScoped<IPaintMapper, PaintMapper(XXXXX, config)>();
};
我想將 IHttpClientFactory 傳遞到我的作用域“PaintMapper”中,我還將為其提供一個配置。
我該怎么做? 由於 IHttpClientFactory 和“配置”都是設置作用域實例所必需的。
我進行此重構有一段時間了,認為我的大腦處理得不是特別好,所以如果我遺漏了一些正常的東西,我深表歉意——但我沒有看到其他地方這樣做過,所以我可能遺漏了一些東西。
通常的做法是只注冊IHttpClientFactory
和配置類型,然后從 ctor 解析它們。 范圍服務可以解決 singleton 的:
services.AddHttpClient(); // install Microsoft.Extensions.Http nuget
services.AddXXX<PaintMapperSettings>();
services.AddScoped<IPaintMapper, PaintMapper>();
class PaintMapperSettings
{
}
class PaintMapper
{
public PaintMapper(IHttpClientFactory factory, PaintMapperSettings settings)
{
}
}
你可以這樣做
services.AddScoped<IPaintMapper, PaintMapper>(provider => {
var config = provider.GetRequiredService<Config>();
var httpFactory = provider.GetRequiredService<IHttpClientFactory>();
// Do stuff with mapper
return mapper;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.