为什么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清洁度的好处……当谈到最好地支持我们的客户群时,前者通常会获胜。 我们将在内部跟踪这是一个改进的好事,我们将在未来的版本中继续考虑它。

从这里开始