我正在ASP.NET内核中使用ASP.NET。
这样做是可行的:
services.AddScoped<IApiKeysService, APIKeysService>();既然接口返回的是泛型类型T,则不会
services.AddScoped<IApiKeysService>();使用泛型类型blah时出错需要1个类型参数
或者这个
services.AddScoped<IApiKeysService<T>>();我得到以下编译错误
找不到类型或命名空间T
如何在Startup.cs中注册?
注意:I不能使用具体类型,因为接口成员是具有泛型方法的基类。
发布于 2018-03-18 20:24:24
接口
您无法实例化接口,因此不可能在没有实现类型的情况下注册接口(无论是否泛型)。
但是,可以将类型注册为具体类型而不是接口。
services.AddScoped(typeof(Foo<>));它在构造函数中指定为:
public MyService(Foo<ClosingType> foo)
{
// implementation
}开放泛型
在.NET:typeof(SomeGenericType<>)中,开放泛型总是以相同的方式指定。
services.AddScoped(typeof(IFoo<>), typeof(Foo<>));如果有多个打开的泛型参数,您将指定使用逗号的数量。例如,有两个开放的泛型参数:
services.AddScoped(typeof(IFoo<,>), typeof(Foo<,>));https://stackoverflow.com/questions/49352434
复制相似问题