我在哪里将共享常量放在C#应用程序中?

时间:2017-08-06 22:13:42

标签: c#

我有一些在多个类中需要的常量字符串。如何以符合这些要求标准的方式存储和检索这些常量:

  1. 没有重复信息。
  2. 没有函数调用来检索常量。
  3. 常量之前没有名称空间符号(IE:Constant而不是Namespace.Constant
  4. 到目前为止,我找到的解决方案都没有达到每个标准:

    1. 在需要的每个课程中复制它们(违反标准#1)。
    2. 将它们存储在一个单独的静态类中,该类在需要的地方引用(有点像C风格的头文件,违反标准#3)。
    3. 将它们放在其中一个使用它们的类中,并在其他地方需要时引用该类(这似乎是一个坏主意,因为它可能会创建循环引用,并且它违反了标准#3)。
    4. 将它们放入app.config并在需要时检索它们(这似乎打破了样式约定,因为非配置数据存储在配置文件中,并且对配置文件的更改可能会破坏应用程序逻辑。它也违反了标准#2)。
    5. C#中是否有符合所有标准的解决方案?

2 个答案:

答案 0 :(得分:3)

我经常使用选项#2,因为#1充斥着不同价值的风险,而#3打破了正常寻求的类封装。如果你必须有全局变量。他们有一个单一的真相来源。

您可以使用using别名使代码更清晰:

 using static namespace.StaticClassName;

答案 1 :(得分:0)

VB.Net有Module Statement可用于全局变量,可以在不使用模块名称的情况下访问它,但C#没有这样的东西。

在C#中,我使用#2,但使用const。这样,当您将其悬停在Visual Studio中时,将显示该值:

enter image description here