我已开始在 .NET 8 中使用
AddKeyedScoped
。
我想使用自己的初始化对象进行依赖:
public static IServiceCollection AddKeyedScoped<TService>(
this IServiceCollection services,
object? serviceKey,
Func<IServiceProvider, object?, TService> implementationFactory)
where TService : class
{
ThrowHelper.ThrowIfNull(services);
ThrowHelper.ThrowIfNull(implementationFactory);
return services.AddKeyedScoped(typeof(TService), serviceKey, implementationFactory);
}
有人使用上述实现来设置密钥和初始化吗?
services.AddScoped<Imyinterface>(s =>
new SqlConnectionFactory(new myimplementation()));
对于范围来说,这工作得很好,但是对于
AddKeyedScoped
services.AddKeyedScoped<Imyinterface>("mykey", rec => new myimplementation()})
此代码不起作用。有人在 .NET 8 中尝试过使用初始值吗?
AddKeyedScoped
签名中可以看到,它接受带有 2 个参数的工厂 -
AddKeyedScoped
,一个是服务提供者,另一个是 - key,所以你需要创建相应的 lambda:Func<IServiceProvider, object?, TService> implementationFactory