Pertanyaan Mengapa AppDomainSetup.ShadowCopyFiles string?


Dari dokumentasi:

String yang berisi nilai string "true" untuk menunjukkan bahwa penyalinan bayangan diaktifkan; atau "salah" untuk menunjukkan bahwa penyalinan bayangan dimatikan.

Dan sudah seperti ini sejak 1.1. Adakah yang bisa mengeluarkan cahaya?

Saya reflector'd pengambil dan setter untuk mengukur baik:

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; 

Jadi mungkin itu Value larik menghasilkan copy constructor yang lebih mudah atau sesuatu?


13
2017-12-07 19:46


asal


Jawaban:


Kekurangan kafein. Beberapa hal tidak dimaksudkan untuk dipahami.

Ini jelas kelihatannya merupakan kesalahan dari .NET versi pertama, tidak diperbaiki karena dapat merusak kode "legacy".

Wah, saya baru saja menemukan ini:

Terima kasih atas tanggapan Anda tentang .NET Framework! Kami setuju bahwa ini adalah kekeliruan dan bahwa jenis properti harus berupa boolean. Namun, cukup sulit (jika tidak mustahil) untuk membuat perubahan ini dalam rilis yang kompatibel ke belakang (seperti Orcas), karena kami akan memecahkan kode dari setiap pelanggan yang mengandalkan perbandingan string. Jadi sayangnya kita harus mempertimbangkan risiko pemutusan kompatibilitas vs. manfaat dari kebersihan API ... dan ketika datang untuk mendukung basis pelanggan kami, yang pertama biasanya menang. Kami akan melacak ini secara internal sebagai hal yang baik untuk ditingkatkan dan kami akan terus mempertimbangkannya di rilis mendatang.

Dari sini


12
2017-12-07 19:47