【发布时间】:2011-12-09 13:51:59
【问题描述】:
我有一个 Common 项目,我在其中添加了 QueryStringNames 的公共常量。
我知道通常常量应该是内部的或私有的,但我在这里需要公共常量,因为我想允许全局访问查询字符串名称、会话密钥等。
我知道有 3 个解决方案,但它们都有一个重要问题。调用者程序集将包含我的常量的副本,这意味着如果我必须更改一个常量值,我将不得不编译我的通用程序集和调用者程序集!
1) public const string ConstName = "a value";
2) public readonly string ConstName = "a value";
3) To be stored in a public resource file.
除了将公共常量存储在 web.config 文件(没有智能感知)中之外,在 C# 中定义公共常量的最佳方法是什么?
【问题讨论】:
-
如果您创建了正确的 xsd 架构,您可以在配置中使用智能感知
-
我有点困惑。值的存储位置(即 webconfig)与内存中该值的副本的可访问性有什么关系?
-
你是对的@asawyer;如果再次使用 const 和 readonly 将无法解决问题。
-
@asawyer - 我认为 OP 的观点是,如果它在配置中,他就不必重新编译所有程序集?
-
如果你的意思是这样的话,你不能在没有它的类实例的情况下使用常量。我为此使用了一个静态 co 类,所以我使用 co.PI,所以它只比在代码中使用 PI 长 3 个字符。
标签: c# asp.net resources constants readonly