При попытке использовать статический класс как параметр типа компилятор С# выдает ошибку:
var test = new List<Math>();
ошибка CS0718: `System.Math ': статические классы не могут использоваться в качестве общих аргументов
Это было рассмотрено в этих вопросах:
- С# - статические типы не могут использоваться как аргументы типа
- С# Статические типы не могут использоваться как параметры
Однако я просто понял, что могу создать тип через отражение, и среда выполнения не будет жаловаться:
var test = Activator.CreateInstance(typeof(List<>).MakeGenericType(typeof(Math)));
Согласен ли я, что это поддерживается на уровне CLR, но не на уровне языка?
Или это серая область в спецификациях, то есть я должен воздержаться от использования этих общих построенных типов?