.net 使用泛型接口的依赖注入

nle07wnf  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(193)

我尝试使用泛型接口注入一个包含泛型方法的类。从示意图上看,

public interface IInterface<T>
{
    public List<ClassC<T>> Method(List<ClassC<T>> list);
}

public class ClassA : IInterface<ClassB>
{
    List<ClassC<ClassB>> inList = ...;
    List<ClassC<ClassB>> outList = Method(List < ClassC < ClassB >> inList);
    {
        return inList;
    }
}

在Startup.cs中,

public delegate IInterface<T> Resolver(Type key);

builder.Services.AddTransient<Resolver>(serviceProvider => key =>
{
    switch (key)
    {
        case ClassB:
            return serviceProvider.GetService<ClassA>();
        default:
            throw new Exception;
    }
});

然而,这并不起作用,因为C#在运行Startup.cs时不知道运行时是什么。我的目标是能够在不同的控制器中使用泛型方法Method()的不同定义。有没有一种方法可以使用依赖注入或其他方法来实现这一点?

mwngjboj

mwngjboj1#

以下各项应该可以正常工作:

builder.Services.AddTransient<IInterface<ClassB>, ClassA>();

然后你可以将以下内容注入一个类:

public SomeClass(IInterface<ClassB> classBInterface) { ... }

它是具体的类型,如果你检查,将确实由ClassA

相关问题