在我的可本地化应用程序中,我抛出如下 ArgumentException:
throw ArgumentException("LocalizedParamName", "LocalizedErrorMessage");
我是这样理解的:
catch (Exception ex)
{
Display(ex.Message);
}
我得到的错误消息是:
本地化错误信息 参数名称:LocalizedParamName
这里的问题是“参数名称:”,它是英文的,而不是我的应用程序的语言。我假设该字符串使用的是 .NET 框架的语言。谁能证实这一点?
一种解决方法是这样做:
catch (ArgumentException ex)
{
Display((ex as Exception).Message + "\n" + "Translated(Parameter name:)"+ ex.ParamName);
}
catch (Exception ex)
{
Display(ex.Message);
}
还有其他更优雅的方式吗?
最佳答案
您正在使用非空参数名称调用构造函数 ArgumentException(string message, string paramName)。
执行此操作时,您会得到所看到的结果,即您的消息后跟“参数名称:您的参数名称”。
文本“参数名称:”来自 .NET Framework 资源:您未获得本地化版本的原因可能是您尚未在计算机上安装相关的 .NET Framework 语言包。可以下载语言包here .
如果您安装所用语言的语言包,您将获得预期的结果。
或者,您可以使用构造函数 ArgumentException(string message),并构建您自己的消息,包括参数名称。
关于c# - .NET 中 ArgumentException.Message 的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014257/