我正在尝试编写一个帮助器方法,该方法将记录消息并使用相同的消息抛出指定类型的异常.我有以下内容:
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);
}
Run Code Online (Sandbox Code Playgroud)
在添加new()约束之前,编译器抱怨说没有它我无法实例化TException.现在我收到的错误消息是"在创建类型参数'TException'的实例时无法提供参数".我尝试使用无参数构造函数创建实例,然后设置Message属性,但它是只读的.
这是语言的限制还是我不知道的解决方案?也许我可以使用反射,但这对于这么简单的任务来说太过分了.(而且非常丑陋,但这是个人观点的问题.)