2

我在类库项目中有一个资源文件。我正在使用这个资源文件来保存用户最终可能会看到的各种消息。

例如,资源名称为“InvalidEmailAddress”,en-US 资源文件中的值为“Invalid Email Address”。

当我调用 ResourceManager 的 GetString(string) 方法时,我正在这样做:

 return resourceManager.GetString("InvalidEmailAddress");

然而,这对我来说似乎真的很糟糕。如果有人更改资源的名称怎么办?现在我的语句将返回一个空值。

有没有办法解决这个问题?

更新:本地化是这里的一个重要因素。使用资源管理器是为了确保我可以更改文化并获得适当的字符串值。

4

2 回答 2

5

您可以改为使用自动生成的类 - 魔术字符串常量将从代码中删除并替换为强类型访问方法。VS 将此文件命名为 ResourceName.Designer.cs 并在每次在 VS 中修改 resx 时更新它。

生成方法的示例:

   internal static string String1 {
        get {
            return ResourceManager.GetString("String1", resourceCulture);
        }

注意:虽然创建此文件是在 VS 中添加新资源时的默认行为,但您可能已禁用它,或者您可能尝试在程序集之外使用生成的资源。在这种情况下,请确保将“自定义工具”属性或 resx 文件设置为“PublicResXFileCodeGenerator”或“ResXFileCodeGenerator”(稍后如果您仅在单个程序集中使用资源)。(感谢@dbaseman 的评论)。

于 2012-10-21T00:27:28.300 回答
2

创建资源时,它将在 Resources 命名空间中生成强类型。

您可以通过资源 (resx) 文件的名称来访问Resources.ClassName.InvalidEmailAddressClassName

于 2012-10-21T00:33:28.840 回答