我在类库项目中有一个资源文件。我正在使用此资源文件来保存用户可能最终看到的各种消息。
例如,资源名称为“InvalidEmailAddress”,en-US资源文件中的值为“Invalid Email Address”。
当我调用ResourceManager的GetString(string)方法时,我这样做:
return resourceManager.GetString("InvalidEmailAddress");
但是,这对我来说真的很糟糕。如果有人更改资源的名称怎么办?现在我的语句将返回一个空值。
有没有解决这个问题的方法?
更新:本地化是一个重要因素。使用资源管理器是为了确保我可以更改文化并获取适当的字符串值。
答案 0 :(得分:5)
您可以使用自动生成的类 - 魔术字符串常量将从代码中删除,并替换为强类型访问方法。 VS将此文件命名为ResourceName.Designer.cs,并在每次在VS中修改resx时更新它。
生成方法的示例:
internal static string String1 {
get {
return ResourceManager.GetString("String1", resourceCulture);
}
注意:创建此文件是在VS中添加新资源时的默认行为,您可能已将其禁用,或者您可能尝试在程序集外使用生成的资源。在这种情况下,请确保将“自定义工具”属性或resx文件设置为“PublicResXFileCodeGenerator”或“ResXFileCodeGenerator”(稍后如果仅在单个程序集中使用资源)。 (感谢@dbaseman发表评论)。
答案 1 :(得分:2)
创建资源时,将在Resources名称空间中生成强类型。
您可以通过Resources.ClassName.InvalidEmailAddress
访问它,其中ClassName
是您的资源(resx)文件的名称。