2011-03-29 55 views
5

我有一个使用许多全局常量的项目。最终,我计划提取程序的某些部分并创建它自己的程序集。将常量移动到单独的程序集中

是不是还值得(或这可能吗?)单独创建一个全局常量的组件(即,GlobalConstants.dll),这样我可以在未来会议使用该程序集?

这种方法将帮助我少做编码,我可以保持相同的名称为整个项目的常量。

回答

4

您预计有多少个项目可以使用相同的常量?如果有真的一个案件,那么罚款;否则......不。

当然,如果你有一些同样可能被重用实用程序库,那么它们可能在那里有意义,只要适当的命名空间和类型范围。个人而言,直到我有一个实际,具体的目的在移动他们,我会让他们孤单。

11

虽然它肯定是可以做的,甚至是一个不错的主意,你应该知道的是,C#编译器将常量的值而不是引用的事实。

有了这个,我的意思是,在C#编译器将取代所有不断的情况下,在你的代码和取代的“变量”与价值。

这意味着即使您更新程序集GlobalConstants.dll并将其复制到您拥有的某个应用程序,您也需要重新编译该应用程序。不这样做,会导致应用程序使用旧的常量值。

为了克服这个问题,可以简单地使用public static readonly代替public const作为readonly改性剂从const不同之处在于它是由C#编译器中代码的引用,而不是一个值进行处理。

1

一个原因装配创建一个单独的常量是允许“不太复杂”的更新,例如错误消息和本地化,您可以更新组件的修补程序,减少破别的风险。

有用一般来说,我们找到共享的常量是具有包含全局常量的商业实体层构造 - 业务实体是我们弓的唯一层。可以通过(大部分)图层访问。

具有单独的组件引起开销,这取决于常数你有,你可能有一些是直接依赖于功能 - 例如。一个可用于在Hashtable中查找值的键。

相关问题