Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat mengikat konfigurasi menggunakan Dictionary<TKey,TValue> objek di mana nilai adalah jenis koleksi yang dapat diubah, mengikat ke kunci yang sama lebih dari sekali sekarang memperluas koleksi nilai alih-alih mengganti seluruh koleksi dengan nilai baru.
Versi yang diperkenalkan
.NET 7
Perilaku sebelumnya
Pertimbangkan kode berikut yang mengikat konfigurasi yang memiliki satu kunci bernama Key ke kamus beberapa kali.
using Microsoft.Extensions.Configuration;
IConfiguration config = new ConfigurationBuilder()
.AddInMemoryCollection()
.Build();
config["Key:0"] = "NewValue";
var dict = new Dictionary<string, string[]>() { { "Key", new[] { "InitialValue" } } };
Console.WriteLine($"Initially: {String.Join(", ", dict["Key"])}");
config.Bind(dict);
Console.WriteLine($"Bind: {String.Join(", ", dict["Key"])}");
config.Bind(dict);
Console.WriteLine($"Bind again: {String.Join(", ", dict["Key"])}");
Sebelum .NET 7, nilai untuk Key ditimpa satu setiap ikatan. Kode menghasilkan output berikut:
Initially: InitialValue
Bind: NewValue
Bind again: NewValue
Perilaku baru
Mulai dari .NET 7, nilai kamus diperpanjang setiap kali kunci yang sama terikat, menambahkan nilai baru tetapi juga menyimpan nilai yang ada dalam array. Kode yang sama dari bagian Perilaku sebelumnya menghasilkan output berikut:
Initially: InitialValue
Bind: InitialValue, NewValue
Bind again: InitialValue, NewValue, NewValue
Jenis perubahan yang memutus kompatibilitas
Perubahan ini adalah perubahan perilaku .
Alasan perubahan
Perubahan ini meningkatkan perilaku pengikatan dengan tidak mengesampingkan nilai yang ditambahkan sebelumnya dalam array nilai kamus.
Tindakan yang direkomendasikan
Jika perilaku baru tidak memuaskan, Anda dapat memanipulasi nilai secara manual di dalam array setelah pengikatan.
API yang terpengaruh
- Metode "ConfigurationBinder"