Answers:
您可能将它们放在具有静态只读属性的静态类中。
public static class Routes
{
public static string SignUp => "signup";
}
IMO使用充满常数的类对常数很好。如果它们偶尔会改变,我建议您在配置中使用AppSettings,并使用ConfigurationManager类。
当我有实际上从AppSettings或类似应用程序中提取的“常量”时,我仍然始终会有一个“常量”类,用于包装从配置管理器读取的内容。Constants.SomeModule.Setting
不必直接诉诸ConfigurationManager.AppSettings["SomeModule/Setting"]
于任何要消耗所述设置值的地方,这总是更有意义。
此设置的好处是,由于SomeModule
可能是Constants文件中的嵌套类,因此您可以轻松地使用Dependency Injection将依赖项注入SomeModule
直接注入依赖它的类中。您甚至还SomeModule
可以ISomeModuleConfiguration
在使用的代码的顶部提取接口,然后创建依赖关系,这将使您可以将依赖项与Constants文件解耦,甚至可能使测试变得更容易,尤其是如果这些设置来自AppSettings和您可以使用config转换来更改它们,因为这些设置是特定于环境的。
我想做的是以下操作(但请务必仔细阅读以使用正确的常量类型):
internal static class ColumnKeys
{
internal const string Date = "Date";
internal const string Value = "Value";
...
}
阅读本文以了解为什么const
可能不是您想要的。常量的可能类型为:
const
领域。如果值将来可能会更改,请不要跨程序集(public
或protected
)使用,因为该值将在编译时在其他程序集中进行硬编码。如果更改该值,则旧值将由其他程序集使用,直到重新编译它们为止。static readonly
领域static
没有财产 set
空的静态类是合适的。考虑使用多个类,以便最终获得一组不错的相关常量,而不是一个庞大的Globals.cs文件。
此外,对于某些int常量,请考虑以下符号:
[Flags]
enum Foo
{
}
因为这样允许将值当作flags对待。
使用web.config或app.config的另一票。配置文件是常量(例如连接字符串等)的好地方。我宁愿不必查看源代码即可查看或修改这些类型的事物。从.config文件中读取这些常量的静态类可能是一个不错的折衷方案,因为它将使您的应用程序可以像使用代码中定义的那样访问这些资源,但仍可以使您灵活地将它们放在易于查看/可编辑的位置空间。