为什么AppDomainSetup.ShadowCopyFiles是一个字符串?

Jas*_*yon 14 c# appdomainsetup

文档:

包含字符串值"true"的String,表示启用了卷影复制; 或"false"表示阴影复制已关闭.

从1.1开始就是这样.谁能摆脱任何光明?

我反射了吸气剂和定型器以获得良好的测量:

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; 
Run Code Online (Sandbox Code Playgroud)

那么也许Value数组会产生一个更简单的复制构造函数或什么?

Rub*_*ias 13

缺乏咖啡因.有些事情并不意味着被理解.

这显然是.NET第一版的一个错误,没有修复,因为这可能会打破"遗留"代码.

天哪,我刚刚发现了这个:

感谢您对.NET Framework的反馈!我们同意这是一个疏忽,属性类型应该是一个布尔值.但是,在向后兼容的版本(例如Orcas)中进行此更改是非常困难的(如果不是不可能的话),因为我们会破坏依赖于字符串比较的任何客户的代码.所以不幸的是,我们必须权衡破坏兼容性的风险与API清洁度的好处......当谈到最好地支持我们的客户群时,前者通常会获胜.我们将在内部跟踪这是一个改进的好事,我们将在未来的版本中继续考虑它.

这里开始