我有一个利用许多全局常量的项目。最终,我计划提取程序的某些部分并创建自己的程序集。
仅为全局常量(即GlobalConstants.dll)创建程序集是否值得(或可能?),以便我可以在将来的程序集中使用此程序集?
这个方法可以帮助我减少编码,并且可以为项目中的常量保留相同的名称。
答案 0 :(得分:11)
虽然它当然可以做,甚至可能是个好主意,但你应该意识到C#编译器将常量视为值而不是引用。
有了这个,我的意思是C#编译器将替换代码中常量的所有实例,用值替换“变量”。
这意味着即使您更新程序集GlobalConstants.dll
并将其复制到您拥有的某个应用程序,也需要重新编译该应用程序。不这样做,将导致应用程序使用旧的常量值。
要解决此问题,您只需使用public static readonly
代替public const
,因为readonly
修饰符与const
不同,因为它被C#编译器视为代码中的引用而不是值。
答案 1 :(得分:4)
您希望相同的常量有多少项目有用?如果真的一个案例,那么很好;否则......不要。
当然,如果你有一些同样可能被重用的实用程序库,那么它们可能在那里有意义,只要适当地限定命名空间和类型。
就个人而言,直到我有一个实际的,具体的移动它们的目的,我会让他们独自一人。
答案 2 :(得分:1)
创建单独的常量程序集的一个原因是允许“不太复杂”的更新,例如错误消息和本地化,您可以将程序集更新为修补程序,并降低破坏其他任何内容的风险。
通常我们发现共享常量很有用的是拥有一个包含全局常量的业务实体层程序集 - 因为业务实体是我们arch中唯一的层。可以通过(大多数)层访问。
拥有一个单独的程序集会导致开销,并且根据您拥有的常量,您可能会有一些直接依赖于功能 - 例如。一个密钥,可用于在Hashtable中查找值。