我正在对一个大型项目进行本地化,我通过手动创建一个大型资源文件并在代码中按名称调用每个字符串来做到这一点。我没有调用ResourceManager
和使用GetString
(用于对话框等),而是简单地将每个字符串替换为Resources.ClassName_MethodName_StringName
.
我有一种感觉,我应该使用 . ResourceManager
,但我想了解为什么在我更改所有代码以使用它之前它会更好。
我正在对一个大型项目进行本地化,我通过手动创建一个大型资源文件并在代码中按名称调用每个字符串来做到这一点。我没有调用ResourceManager
和使用GetString
(用于对话框等),而是简单地将每个字符串替换为Resources.ClassName_MethodName_StringName
.
我有一种感觉,我应该使用 . ResourceManager
,但我想了解为什么在我更改所有代码以使用它之前它会更好。
好吧,没有理由直接使用 ResourceManager(会有一些例外情况适用),因为如果您使用从 resx-Files 生成的代码,它所做的一切如下:
public static string MyResourceName {
get {
return ResourceManager.GetString("MyResourceName", resourceCulture);
}
}
这很棒,因为您可以免费获得资源名称的编译时验证!
http://www.c-sharpcorner.com/uploadfile/prvn_131971/chapter-i-resources-and-localization/
在内部,生成的类使用在 System.Resources 命名空间中定义的 ResourceManager 类的实例。可以通过生成的类的 ResourceManager 属性访问此类的实例。在内部,用于访问嵌入资源本身的属性过程只是围绕调用此 ResourceManager 实例的 GetXxx 方法之一(即 GetString 或 GetStream)的包装器。例如,可通过生成的属性过程 Resources.MyResourceStrings 访问的资源。
因此,无论如何您都在使用 YourResources.ResourceManager.GetString() 方法直接按名称调用资源。