我正在尝试创建一个使用IOptions<T>
作为参数的通用方法,但是代码似乎无效。
Visual Studio显示以下消息:
TConfig必须是具有非参数类型的非抽象类型 构造函数以便将其用作泛型中的参数“ TOption” 类型或方法
'IOptions<TOptions>'
任何有关如何解决此问题的建议将不胜感激。谢谢!
public static IServiceCollection AddConfigurations<TConfig>(
this IServiceCollection services, IConfiguration configuration,
IOptions<TConfig> options)
where TConfig : class
{
}
答案 0 :(得分:3)
问题在于,IOptions
具有以下约束:
where TOptions : class, new()
因此,您也需要此约束(new()
):
public static IServiceCollection AddConfigurations<TConfig>(
this IServiceCollection services, IConfiguration configuration,
IOptions<TConfig> options)
where TConfig : class, new()
{
}
答案 1 :(得分:1)
请查看T
的定义中对IOptions<T>
的约束。由于AddConfigurations<TConfig>
的约束使用TConfig
,因此至少需要约束IOptions<TConfig>
。