C# 当存在多个不同语言的资源文件时,如何检索中性语言资源?

C# 当存在多个不同语言的资源文件时,如何检索中性语言资源?,c#,resources,localization,culture,resourcemanager,C#,Resources,Localization,Culture,Resourcemanager,我有多个支持不同语言的资源文件。向用户提供其首选语言的资源。正在对应用程序日志进行额外的日志记录,我只想使用中性语言(英语)对其进行日志记录 我不想要一个专门的资源文件为英语只邮件。以最终用户的语言向其显示的相同消息应能够以英语另外记录到应用程序日志文件中 这样做的最佳方法是什么 试试看 string res = Resources.ResourceManager.GetString("...", CultureInfo.InvariantCulture); 为什么需要可配置日志?只需硬编码即

我有多个支持不同语言的资源文件。向用户提供其首选语言的资源。正在对应用程序日志进行额外的日志记录,我只想使用中性语言(英语)对其进行日志记录

我不想要一个专门的资源文件为英语只邮件。以最终用户的语言向其显示的相同消息应能够以英语另外记录到应用程序日志文件中

这样做的最佳方法是什么

试试看

string res = Resources.ResourceManager.GetString("...", CultureInfo.InvariantCulture);

为什么需要可配置日志?只需硬编码即可。请举例说明您如何向logI写入信息,而不希望将信息硬编码到应用程序中。由于我已经在资源文件中定义了资源字符串,所以我希望使用这些字符串,而不是将其他消息硬编码到代码中。我使用自定义日志类。资源字符串表示错误消息,并具有参数占位符{0}、{1}等,这些占位符在运行时被替换以构造最终的错误消息。我希望能够专门用英语登录到应用程序日志。这会起作用,但我们将失去访问资源字符串的强大类型。如果资源名称中存在键入错误,则容易出错。资源类具有区域性属性。您可以在检索值之前将其设置为不变量,并在检索值之后将其还原。不过这有点像黑客。您也可以为字符串资源文件生成自己的代码。@Elan幸运的是,我们现在有了
nameof
运算符,因此代码中不再硬编码资源名称<代码>Resources.ResourceManager.GetString(nameof(Resources.myResourceString),…)是的,幸运的是,我们现在有了“nameof!”:)当您想要加载外部资源时,您只需要
ResourceManager
。改用
.Properties