为什么AppDomainSetup.ShadowCopyFiles是一个字符串?
从文档 :
包含字符串值“true”的String,表示启用了卷影复制; 或“false”表示阴影复制已关闭。
从1.1开始就是这样。 谁能摆脱任何光明?
我reflection了吸气剂和制定者以获得良好的衡量标准:
public string ShadowCopyFiles { get { return this.Value[8]; } set { if ((value != null) && (string.Compare(value, "true", StringComparison.OrdinalIgnoreCase) == 0)) { this.Value[8] = value; } else { this.Value[8] = null; } } } //The referenced Value property... internal string[] Value { get { if (this._Entries == null) { this._Entries = new string[0x10]; } return this._Entries; } } private string[] _Entries;
那么也许Value
数组会产生一个更简单的复制构造函数或什么?
缺乏咖啡因。 有些事情无法理解。
这显然是.NET第一版的一个错误,没有修复,因为这可能会破坏“遗留”代码。
天哪,我刚刚发现了这个:
感谢您对.NET Framework的反馈! 我们同意这是一个疏忽,属性类型应该是一个布尔值。 但是,在向后兼容版本(例如Orcas)中进行此更改是非常困难的(如果不是不可能的话),因为我们会破坏依赖于字符串比较的任何客户的代码。 所以不幸的是,我们必须权衡破坏兼容性的风险与API清洁度的好处……当谈到最好地支持我们的客户群时,前者通常会获胜。 我们将在内部跟踪这是一个改进的好事,我们将在未来的版本中继续考虑它。
从这里开始