AddKeyedScoped 使用 func<IServiceProvider, object?, TService>implementationFactory 初始化对象不起作用? .NET 8

问题描述 投票:0回答:1

我已开始在 .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 中尝试过使用初始值吗?

    

c# .net dependency-injection .net-8.0
1个回答
0
投票
AddKeyedScoped

签名中可以看到,它接受带有 2 个参数的工厂 -

AddKeyedScoped
,一个是服务提供者,另一个是 - key,所以你需要创建相应的 lambda:
Func<IServiceProvider, object?, TService> implementationFactory

© www.soinside.com 2019 - 2024. All rights reserved.