Я пытаюсь написать вспомогательный метод, который регистрировал бы сообщение и генерировал исключение указанного типа с тем же сообщением. У меня есть следующее :
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
, но оно доступно только для чтения.
Это ограничение языка или есть решение, о котором я не знаю? Возможно, я мог бы использовать отражение, но это излишне для такой простой задачи. (И довольно уродливо, но это личное мнение.)