Как использовать IOptions <T>в качестве универсального параметра в универсальном методе - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь создать универсальный метод, который использует IOptions<T> в качестве параметра, но код кажется неверным.

Visual studio отображает следующее сообщение:

TConfig должен быть неабстрактного типа с непараметрическим параметром конструктор, чтобы использовать его в качестве параметра «TOption» в общем тип или метод 'IOptions<TOptions>'

Любое предложение о том, как это исправить, будет оценено. Спасибо !!

public static IServiceCollection AddConfigurations<TConfig>(
    this IServiceCollection services, IConfiguration configuration, 
    IOptions<TConfig> options) 
    where TConfig : class
{
}

Ответы [ 2 ]

3 голосов
/ 20 июня 2019

Проблема в том, что IOptions имеет следующее ограничение:

where TOptions : class, new()

Так что вам нужно это ограничение (new()) тоже:

public static IServiceCollection AddConfigurations<TConfig>(
    this IServiceCollection services, IConfiguration configuration, 
    IOptions<TConfig> options) 
    where TConfig : class, new()
{
}
1 голос
/ 20 июня 2019

Посмотрите на ограничения на T в определении IOptions<T>.Ограничения на AddConfigurations<TConfig> должны иметь по крайней мере те ограничения на TConfig, поскольку он использует IOptions<TConfig>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...