Как получить тип универсального класса с несколькими параметрами типа? - С#

Это компилируется:

public class A<T> {
    public void test() {
        var a = typeof (A<>);
    }
}

Это не означает:

public class A<T,S> {
    public void test() {
        var a = typeof (A<>);
    }
}

Я получаю сообщение об ошибке: использование универсального типа "A" требует 2 аргументов типа

Как получить ссылку на тип этого родового типа с двумя аргументами?

Ответы

Ответ 1

Все, что вам нужно, это запятая:

var a = typeof (A<,>);

Обратите внимание, конечно, что это вернет System.Type, который представляет несвязанный общий тип A. Поскольку код находится в методе, принадлежащем типу, вы можете просто искать typeof (A<T, S>), в зависимости от ваших требований.

Ответ 2

использовать A <, > не A < >