如何实现Global Strings C#

时间:2009-12-19 17:45:39

标签: c#

我有很多全局只读字符串(大约100个),我在我的应用程序中使用它永远不会改变。我一直在尝试考虑易于编码且对性能没有太大影响的最佳解决方案。我需要在整个应用程序中使用字符串,如下面的示例所示,其中Relationship只是一个类别,其中值被分组,Alternate是字符串值本身。

Relationship.Alternate

我想过用静态只读字段创建静态类,用const字段创建静态类,实现Singleton模式,甚至在辅助方法中创建和解析枚举。任何人都可以就解决这个问题的最佳方法提供一些好的建议。

4 个答案:

答案 0 :(得分:8)

如何使用resource files

它们是打字的,可以在运行时从代码中轻松访问,无需重新编译即可轻松编辑,并支持任何字符串内容(即不像枚举,只支持类似标识符的字符串)。

例如,您可以将名为GlobalStrings.resx的资源文件添加到C#项目中,然后将名为Relationship_Alternate的字符串添加到该文件中。您可以为该字符串键入任何所需的值。在代码中,您将访问字符串值:

GlobalStrings.Relationship_Alternate

由于这些是在编译时验证的标识符,因此可以保证所有字符串在运行时都能成功加载。

希望它有所帮助。

答案 1 :(得分:2)

为什么不把它们放在枚举中,这样可以使内存高效,可读性更低,更容易出错

答案 2 :(得分:1)

如果要在编译时设置它们,可以尝试将它们放在appSettings中(在web.config或app.config中)。这通常适用于连接字符串等。如果它们将在运行时设置,取决于其他一些值,您可以使用静态类&静态只读字段

编辑:如果您想要强类型,也可以使用设置文件。见MSDN article

答案 3 :(得分:1)

您应该考虑使用资源文件。请参阅此MSDN中的CodeProject article或解决方案B.