Я пишу класс Generic следующим образом.
public class Foo<T> :
where T : Bar, new()
{
public void MethodInFoo()
{
T _t = new T();
}
}
Как вы можете видеть, объект _t
типа T создается во время выполнения. Для поддержки создания типичного типа T язык заставляет меня помещать new() в подпись класса. Я бы согласился на это, если Bar является абстрактным классом, но зачем это нужно, если стандартный стандартный класс Bar с открытым конструктором без параметров.
Компилятор запрашивает следующее сообщение, если new() не найден.
Невозможно создать экземпляр типа переменной 'T', потому что у него нет ограничения new()