【发布时间】:2021-05-23 19:13:18
【问题描述】:
在 IServiceCollection 上,提供的注册服务 AddTransiet、AddScoped、AddSingleton 的方法不允许您在必须通过计算其某些步骤来检索服务时使用 async-await 构造。
我想知道制作异步版本是否是一种有效的方法。
internal static IServiceCollection AddScopedResolveAsync<TService>(this IServiceCollection serviceCollection, Func<IServiceProvider, Task<TService>> func)
=> serviceCollection.AddScoped(func);
然后使用它
services.AddScopedResolveAsync<IMyService>(async serviceProvider =>
{
await something;
return new MyService();
});
【问题讨论】:
-
注入工厂服务,而不是可以异步创建实例。我绝对不会将任务注册到 DI
标签: c# asp.net-core