为什么调用ResourceManager类比直接按名称加载资源更好?

我正在研究一个大项目的本地化,我是通过手动创建一个大型资源文件,并在代码中按名称调用每个字符串来实现的。 我只是用Resources.ClassName_MethodName_StringName替换每个字符串,而不是调用ResourceManager并使用GetString (用于对话框等)。

我有一种感觉,我应该使用ResourceManager ,但我想了解为什么在我更改所有代码以使用它之前更好。

好吧,没有理由直接使用ResourceManager(一些例外情况适用),因为如果你使用resx-Files生成的代码,那么它的全部内容如下:

 public static string MyResourceName { get { return ResourceManager.GetString("MyResourceName", resourceCulture); } } 

这很棒,因为您可以免费获得资源名称的编译时validation!

http://www.c-sharpcorner.com/uploadfile/prvn_131971/chapter-i-resources-and-localization/

在内部,生成的类使用ResourceManager类的实例,该实例在System.Resources命名空间中定义。 可以通过生成的类的ResourceManager属性访问此类的实例。 在内部,访问嵌入资源本身的属性过程只是对此ResourceManager实例的GetXxx方法之一(即GetString或GetStream)的调用的包装。 例如,可通过生成的属性过程Resources.MyResourceStrings访问的资源。

因此,直接通过名称调用资源,无论如何都要使用YourResources.ResourceManager.GetString()方法。