Недавно я столкнулся с проблемой создания исключения с данным сообщением из общего метода.Например, следующий код работает должным образом:
public static void Throw<T>() where T : Exception, new()
{
throw new T();
}
...
public static void Main()
{
Throw<ArgumentOutOfRangeException>(); // Throws desired exception but with a generic message.
}
Однако я хотел бы написать:
public static void Throw<T>(string message) where T : Exception, new()
{
T newException = new T();
newException.Message = message; // Not allowed. 'Message' is read-only.
throw newException;
}
...
public static void Main()
{
Throw<ArgumentOutOfRangeException>("You must specify a non-negative integer."); // Throws desired exception.
}
Есть ли способ достичь этого без использования отражения?изменить значение свойства Message
или динамически активировать экземпляр типа с требуемыми параметрами?