【发布时间】:2011-09-03 10:06:25
【问题描述】:
我是一名专业的 php 程序员,最近我开始了一个 C# 项目。 这是我使用 C# 的第一步。
对于我的一个解决方案,我想使用全局 CONST。我知道 C# 不允许您在类范围之外定义任何变量,但我还是想尝试实现类似的东西,即使只是为了学习该语言中的不同技术。
我认为执行类似全局 CONST 的最佳方法是定义一个静态类,我们称之为 Const,它将保存我所有解决方案的“常量”。 该类将使用一个私有字典来保存值,一个名为“define()”的方法来在这个字典中设置一个值,“is_defined()”来检查一个常量是否存在等等。
现在我要编写返回值的方法。 显然,我可以使用方法 Const.GetConst('someConstName') 并获得想要的值,但这是在我需要时随时检索 const 的漫长方法。 我虽然使用了类似 PHP 的魔法 getter 的东西(如果你不熟悉它 - 你在一个类中定义了一个名为 '__get' 的方法,它处理对类中未定义的变量的所有请求)。 但是,我在 C# 中找不到类似的东西。我能找到的最接近的方法是在运行时在类中动态创建一个方法,这样每次在我的类中创建一个 CONST 时,我都会创建一个“get 方法”,它将从私有字典中提取值(这不是经典形式的 get 方法,因为它不会返回变量,而是会在字典中查找值并返回它。
基本上,我要问的是—— - 有没有办法定义全局常量? - (即使上一个问题的答案是肯定的)有没有办法为动态定义变量设置更好的吸气剂?
非常感谢您的帮助
【问题讨论】:
-
我认为你在 PHP 的“情绪”中仍然太过分了。当你知道什么时候要使用变量时,为什么还要使用字典来存储它们?您可以事先想好一个名称,然后将它们填充到适当的类中,例如
Database.ConnectionString,具有封装、强类型等所有优点。 -
如果它们是动态属性 和 值,它们究竟是什么常量?这里有两种不同的场景:暴露常量或属性包;但它们是两种不同的东西。
标签: c#