共用方式為


組態繫結器新增至字典的空白索引鍵

在舊版中,當組態繫結至字典類型時,會跳過組態中沒有任何對應值的索引鍵,而不會加入到字典中。 此行為已變更,現在不再跳過這些索引鍵,而是使用其預設值自動建立。 這項變更可確保組態中列出的所有索引鍵都會出現在字典內。

導入的版本

.NET 8 Preview 5

先前的行為

先前,繫結到字典類型時會跳過組態中的空白索引鍵。 請​注意下列的組態字串和繫結程式碼。

var json = @"{
    ""Queues"": {
        ""q1"": {
            ""V"": 1
        },
        ""q2"": {
            ""V"": 2
        },
        ""q3"": {
        }
    }
}";
public class Q
{
    public Dictionary<string, QueueValue> Queues { get; set; } = new();
}

public class QueueValue
{
    public int V { get; set; }
}

var configuration = new ConfigurationBuilder()
    .AddJsonStream(StringToStream(json))
    .Build();

Q options = new Q();
configuration.Bind(options);
foreach (var kvp in options.Queues)
{
    Console.WriteLine($"{kvp.Key}: {kvp.Value.V}");
}

先前,您會看到下列的輸出 (請注意,索引鍵 q3 遺漏了):

q1: 1
q2: 2

新的行為

從 .NET 8 開始,在組態繫結期間,空的組態索引鍵會以其預設值加入到字典中。

請​注意先前行為區段中的程式碼,該程式碼現在會輸出下列文字,顯示 q3 已以其預設值加入到字典中:

q1: 1
q2: 2
q3: 0

中斷性變更的類型

此變更為行為變更

變更原因

這項使用者要求的變更可確保組態中列出的所有索引鍵都會出現在字典內。 讓所有的索引鍵都出現可簡化流程並避免遺漏索引鍵的潛在問題。

確認並調整您的應用程式邏輯,以容納新建立含空值的字典項目的出現。 如果不需要新的行為,請從組態中移除空值項目。 藉由排除這些項目,在繫結過程期間就不會加入含空值的字典項目。

受影響的 API