我似乎遇到了一个奇怪的问题,即字符串引用没有加载更新的值。
简而言之,我替换了一个包含一堆页面标题(例如 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(使用前将#替换为@)