使用* .resx文件存储字符串值对

时间:2010-10-14 15:51:27

标签: resources localization embedded-resource

我有一个需要在字符串值之间进行映射的应用程序,因此本质上是一个可以保存键值对的容器。我没有使用字典或名称 - 值集合,而是使用了我在代码中以编程方式访问的资源文件。我理解资源文件用于多语言实现等的本地化场景。但是我喜欢它们的强类型性质,它确保如果值被更改,则应用程序不会编译。

但是,我想知道使用* .resx文件进行简单的键值对存储是否有任何重要缺点,而不是使用更传统的编程类型。

1 个答案:

答案 0 :(得分:0)

我可以想到两个缺点:

  • 它需要I / O操作来读取键/值对,这可能会导致显着的性能下降,
  • 如果你让标准.Net逻辑解析加载资源,它总是会尝试找到与CultureInfo.CurrentUICulture属性对应的文件;如果你确定你真的想拥有多个resx-es(即每种语言一个),这可能会有问题;这可能会导致性能进一步下降。

顺便说一句。你不能只创建包含属性的辅助类或结构,如:

public static class GlobalConstants
{
    private const int _SomeInt = 42;
    private const string _SomeString = "Ultimate answer";

    public static int SomeInt
    {
        get
        {
            return _SomeInt;
        }
    }

    public static string SomeString
    {
        get
        {
            return _SomeString;
        }
    }
}

然后,您可以像资源文件一样以完全相同的方式访问这些属性(我假设您已经习惯了这种风格):

textBox1.Text = GlobalConstants.SomeString;
textBox1.Top = GlobalConstants.SomeInt;

也许这不是最好的事情,但我坚信这仍然比使用资源文件更好......