Самый простой (и лучший) метод - вызвать Activator.CreateInstance
самостоятельно.Это то, что на самом деле делает компилятор C #, поскольку ограничение new()
просто гарантирует, что указанный тип имеет конструктор без параметров;вызов new TException()
на самом деле использует Activator.CreateInstance
для создания экземпляра типа.
Примерно так будет работать:
throw (Exception)Activator.CreateInstance(typeof(TException), exception);