如何实现全局字符串C#

如何实现全局字符串C#,c#,C#,我在应用程序中使用了很多全局只读字符串(大约100个),它们永远不会改变。我一直在努力寻找最好的解决方案,它易于编写代码,并且不会对性能产生太大影响。我需要在整个应用程序中使用字符串,如下面的示例所示,其中关系只是一个类别,其中值是分组的,而Alternate是字符串值本身 Relationship.Alternate 我考虑过使用静态只读字段创建静态类,使用常量字段创建静态类,实现单例模式,甚至在助手方法中创建和解析枚举。谁能就解决这个问题的最佳方法提供一些好的建议呢 如何使用 它们是类型化

我在应用程序中使用了很多全局只读字符串(大约100个),它们永远不会改变。我一直在努力寻找最好的解决方案,它易于编写代码,并且不会对性能产生太大影响。我需要在整个应用程序中使用字符串,如下面的示例所示,其中关系只是一个类别,其中值是分组的,而Alternate是字符串值本身

Relationship.Alternate
我考虑过使用静态只读字段创建静态类,使用常量字段创建静态类,实现单例模式,甚至在助手方法中创建和解析枚举。谁能就解决这个问题的最佳方法提供一些好的建议呢

如何使用

它们是类型化的,在运行时很容易从代码中访问,很容易编辑,无需重新编译,并且支持任何字符串内容(例如,与枚举不同,枚举只支持类似标识符的字符串)

例如,您可以将名为
GlobalStrings.resx
的资源文件添加到C#project中,然后将名为
Relationship\u Alternate
的字符串添加到该文件中。可以为该字符串键入所需的任何值。在代码中,您可以通过以下方式访问字符串值:

GlobalStrings.Relationship_Alternate
因为这些是在编译时验证的标识符,所以可以保证在运行时成功加载所有字符串


希望有帮助。

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


编辑:如果要强类型,也可以使用设置文件。请参阅

为什么不把它们放在枚举中,这可以使它记忆效率高,而且读起来也容易出错,

你应该考虑使用资源文件。请参阅本节中的或解决方案B。

字符串的用途是什么?它们在哪些上下文中使用?这些因素很可能会影响解决方案的最佳选择9个问题,26个答案,0%接受率?对不起,忘记接受我其他问题的解决方案了。我现在纠正了这一点。感谢psasikI希望创建表示字符串的强类型对象,以便字符串位于应用程序中的一个位置,并且没有编译器不会发现的拼写错误。这些字符串都用作XML元素属性,用于扩展用于创建ATOM 1.0提要的联合类。我希望将其保留在程序集中,因为这将由多个项目使用。抱歉,我应该在问题中指定此项。您可以将资源编译到程序集中。事实上,“嵌入式资源”是VisualStudio中的默认构建操作。字符串将嵌入到EXE或DLL中。