我正在尝试使用依赖注入来添加具有构造函数参数的通用服务。我需要实现这个,一般来说:
host.Services.AddSingleton<IService>(x =>
new Service(x.GetRequiredService<IOtherService>(),
x.GetRequiredService<IAnotherOne>(),
""));
这就是我使用开放泛型所做的工作:
host.Services.AddSingleton(typeof(IGenericClass<>), typeof(GenericClass<>));
我无法使用 opengenerics 添加构造函数参数。这是我要添加 DI 的类:
public class GenericClass<T> : IGenericClass<T> where T : class, new()
{
private readonly string _connectionString;
private readonly IGenericClass2<T> _anotherGenericInterface;
private readonly IInterface _anotherInterface;
public GenericClass(
string connectionString,
IGenericClass2<T> anotherGenericInterface,
IInterface anotherInterface)
{
_connectionString = connectionString ??
throw new ArgumentNullException(nameof(connectionString));
_executer = anotherGenericInterface;
_sproc = anotherInterface;
}
}