【发布时间】:2020-11-04 11:51:19
【问题描述】:
我正在尝试找到一种方法来创建一个带有常量字符串的静态类,当此类的值发生变化时,它不会强制重新编译。
我在highly voted comment 中读到:
...如果您更改 (const) 值,您还必须重新编译所有依赖于定义常量的程序集的程序集 - 因此走只读路线通常更安全。
所以我做了一个简短的实验来检查它是否属实。
我有 4 个项目:Program、ProjectA、ProjectB 和 ProjectC。每个“ProjectX”都有一个类“X”,而程序存储main。
在 C 中我有一个public const string someString = "some const string",它被B 中的公共方法引用,而A 中的公共方法又引用了它,A 的方法被@987654331 调用@。
无论我将someString 设为const、static readonly、仅使用getter 表达式体属性还是仅使用属性初始化器的getter 属性,无论如何都会重建所有项目 .
那么,我是否可以拥有一个 static 类来保存只读字符串值,一旦其值发生更改,它就不会将重新编译传播到所有相关项目?
【问题讨论】:
-
构建系统着眼于依赖关系,而不是语义。因此,如果项目 A 被重建并且项目 B 引用它,它也将被重建,即使它也可以在没有重建的情况下工作。
-
那么从开发人员的角度来看,它是否是 const 又有什么关系呢?无论如何,您都会重新编译所有内容。
-
这些项目可能不会一起构建。想想一个库 A 和一个使用它的第三方应用程序。然后,您要避免库中的任何重大更改迫使其他开发人员重新构建。
-
好的,所以在 3rd 方库的情况下这是有道理的,但是当使用具有项目之间引用的整体解决方案时?使用这些带有大量
const strings 的大型静态类仍然是常见的做法,还是人们使用其他解决方案(例如资源文件)?