代码隐藏中的 .NET / C# 字符串引用未加载更新值

2024-01-21

我似乎遇到了一个奇怪的问题,即字符串引用没有加载更新的值。

简而言之,我替换了一个包含一堆页面标题(例如 HTML 页面标题)的 DLL 文件 (App_Code.dll),但从其他 DLL 引用时,这些值并未更新。

以下是示例页面代码隐藏中的代码片段:

   this.Master.PageDescription = Constants.Titles.CardInfoPageDescription;

Constants 类被编译到 App_Code.dll 中,我刚刚替换了它。我还清除了缓存(在本例中为 IIS 6),重新启动计算机,并确保本地浏览器缓存为空。

但是,当我加载网页时,它没有加载 Constants.Titles.CardInfoPageDescription 的新值。对于所有网页都是如此。

我可以让它更新它以替换该页面的 DLL 的唯一方法,该页面根本没有改变......

知道这是为什么吗?这个字符串引用实际上没有在运行时查找并内置到页面 DLL 中吗?

任何帮助是极大的赞赏!

谢谢, 亚当


让我猜一下:你的常量暴露为public const fields.

每当你使用const,它的值在构建时嵌入到已编译的代码中,而不是在运行时动态引用。因此,当您随后替换声明常量的 DLL 时,被替换的 DLL 外部的所有代码将继续使用旧值,直到重新编译为止。

从更哲学的角度来看——为什么你的“常数”要更新?仅使用const对于值将never, ever, ever改变。如果它可以改变,那么它就不是一个常数。

从更实际的角度来看,公开公共字段通常不被认为是好的做法。请改用属性。 (此规则的一个可能的例外可能是genuine永远、永远、永远不会改变的常数。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码隐藏中的 .NET / C# 字符串引用未加载更新值 的相关文章

随机推荐