我有一个带有const字符串变量的类的程序集,
public class Data {
public const string Version = "1.0.0";
}
这将在另一个程序集中用于分配给字符串属性,
public class ViewModel
{
AppVersion = Data.Version;
public String AppVersion
{
get;
set;
}
}
此AppVersion将显示在UI应用程序上。
问题是,我已将此版本更新为1.0.1并且仅构建此程序集具有Data类并将dll移动到生产中。
但是,这个新版本没有显示,仍显示旧版本(1.0.0)。
当我构建具有AppVersion(ViewModel)的其他程序集时,则显示新版本。
问题是什么?我的程序集如何保持olded版本值?
这是const
和static readonly
之间的关键区别。只要改变你这样的Data
类,你会没事的:
public class Data {
public static readonly string Version = "1.0.0";
}
说明:
在AppVersion = Data.Version
的编译时,你的编译器将看到Data.Version
是const string
所以它只是用AppVersion = "1.0.0"
替换这一行(为了优化起见)。
另一方面,当你Data.Version
是static readonly string
编译器会知道他(或她?罗斯林)需要引用Data
类型来获得这个静态字段值,所以当你切换你Data
dll - 你的ViewModel
dll将看到一个实际值。