Я пытаюсь написать вспомогательный метод, который регистрирует сообщение и выдает исключение указанного типа с тем же сообщением. У меня есть следующее:
private void LogAndThrow<TException>(string message, params object[] args) where TException : Exception, new()
{
message = string.Format(message, args);
Logger.Error(message);
throw new TException(message);
}
Перед добавлением ограничения new()
компилятор жаловался, что без него я не могу создать экземпляр TException
. Теперь я получаю сообщение об ошибке "Не могу предоставить аргументы при создании экземпляра параметра типа" TException ". Я попытался создать экземпляр с помощью конструктора без параметров и затем установить свойство Message
, но он доступен только для чтения.
Это ограничение языка или есть решение, о котором я не знаю? Может быть, я мог бы использовать рефлексию, но это переполнение для такой простой задачи. (И довольно уродливый, но это вопрос личного мнения.)