Я думаю, что есть люди, которые могут ответить на этот вопрос, это вопрос из любопытства:
Общий метод CreateInstance
из ] System.Activator
, представленный в .NET v2, не имеет ограничений типа для универсального аргумента, но требует конструктора по умолчанию для активированного типа, в противном случае возникает исключение MissingMethodException
. Мне кажется очевидным, что этот метод должен иметь ограничение типа вроде
Activator.CreateInstance<T>() where T : new() {
...
}
Просто упущение или какой-то анекдот, скрывающийся здесь?
Обновление
Как уже отмечалось, компилятор не позволяет вам писать
private T Create<T>() where T : struct, new()
error CS0451: The 'new()' constraint cannot be used with the 'struct' constraint
Однако, см. комментарии структура может использоваться в качестве аргумента типа для универсального метода, определяющего ограничение new (). В этом случае данный ответ кажется единственной веской причиной не ограничивать метод ...
Спасибо, что просмотрели это!