应用程序未显示更新的字符串值

问题描述 投票:0回答:1

我有一个带有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版本值?

c# .net-assembly
1个回答
0
投票

这是conststatic readonly之间的关键区别。只要改变你这样的Data类,你会没事的:

public class Data {     
    public static readonly string Version = "1.0.0";
}

说明:

AppVersion = Data.Version的编译时,你的编译器将看到Data.Versionconst string所以它只是用AppVersion = "1.0.0"替换这一行(为了优化起见)。

另一方面,当你Data.Versionstatic readonly string编译器会知道他(或她?罗斯林)需要引用Data类型来获得这个静态字段值,所以当你切换你Data dll - 你的ViewModel dll将看到一个实际值。

© www.soinside.com 2019 - 2024. All rights reserved.