saj*_*saj 2 c# generics dependency-injection .net-core asp.net-core
我在ASP.NET Core中使用WebAPI.
这有效:
services.AddScoped<IApiKeysService, APIKeysService>();
Run Code Online (Sandbox Code Playgroud)
现在接口返回泛型类型T这不是
services.AddScoped<IApiKeysService>();
Run Code Online (Sandbox Code Playgroud)
错误使用泛型类型blah需要1种类型的参数
或这个
services.AddScoped<IApiKeysService<T>>();
Run Code Online (Sandbox Code Playgroud)
我得到以下编译错误
无法找到类型或命名空间T.
我该如何注册Startup.cs?
注意:我不能使用具体类型,因为接口成员是具有泛型方法的基类.
您无法实例化接口,因此无法在没有实现类型(无论是否通用)的情况下注册接口.
但是,可以将类型注册为具体类型而不是接口.
services.AddScoped(typeof(Foo<>));
Run Code Online (Sandbox Code Playgroud)
在构造函数中指定为:
public MyService(Foo<ClosingType> foo)
{
// implementation
}
Run Code Online (Sandbox Code Playgroud)
开放泛型总是在.NET中以相同的方式指定:typeof(SomeGenericType<>).
services.AddScoped(typeof(IFoo<>), typeof(Foo<>));
Run Code Online (Sandbox Code Playgroud)
如果有多个打开的通用参数,您可以使用逗号指定多少个.例如,使用2个开放的通用参数:
services.AddScoped(typeof(IFoo<,>), typeof(Foo<,>));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |