Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En versiones anteriores, cuando la configuración estaba enlazada a un tipo de diccionario, las claves sin valores correspondientes en la configuración se omitieron y no se agregaron al diccionario. El comportamiento ha cambiado de modo que esas claves ya no se omiten, sino que se crean automáticamente con sus valores predeterminados. Este cambio garantiza que todas las claves enumeradas en la configuración estarán presentes en el diccionario.
Versión introducida
.NET 8 (versión preliminar 5)
Comportamiento anterior
Anteriormente, las claves vacías de la configuración se omitían cuando se asociaban a un tipo de diccionario. Tenga en cuenta la siguiente cadena de configuración y el código de enlace.
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}");
}
Anteriormente, vería la siguiente salida (observe que falta la clave q3 ):
q1: 1
q2: 2
Nuevo comportamiento
A partir de .NET 8, las claves de configuración vacías se agregan al diccionario con su valor predeterminado durante la vinculación de configuración.
Considere el código de la sección de comportamiento anterior , que ahora genera el siguiente texto que muestra que q3 se agregó al diccionario con su valor predeterminado:
q1: 1
q2: 2
q3: 0
Tipo de cambio disruptivo
Este es un cambio de comportamiento.
Motivo del cambio
Este cambio solicitado por el usuario garantiza que todas las claves enumeradas en la configuración estén presentes en el diccionario. Tener todas las claves presentes simplifica el proceso y evita posibles problemas con las claves que faltan.
Acción recomendada
Compruebe y adapte la lógica de la aplicación para dar cabida a la presencia de las entradas del diccionario recién creadas con valores vacíos. Si el nuevo comportamiento no es deseable, quite las entradas de valor vacío de la configuración. Al eliminar estas entradas, no se agregarán entradas de diccionario con valores vacíos durante el proceso de enlace.