Partilhar via


FromKeyedServicesAttribute.Key pode ser null

FromKeyedServicesAttribute.Key foi alterado de um não anulável object para um nulo object? para suportar valores nulos para serviços sem chave e cenários de herança.

Versão introduzida

.NET 8

Comportamento anterior

Anteriormente, FromKeyedServicesAttribute.Key foi declarado como não anulável object:

public object Key { get; }

Novo comportamento

A partir do .NET 8, FromKeyedServicesAttribute.Key agora é declarado como anulável object?:

public object? Key { get; }

Um null valor indica que não há nenhuma chave e apenas o tipo de parâmetro é usado para resolver o serviço. Isso é útil para implementações de injeção de dependência que exigem uma maneira explícita de declarar que o parâmetro deve ser resolvido para serviços sem chave. Um valor null também é usado em cenários de herança para indicar que a chave deve ser herdada do escopo pai.

Tipo de mudança disruptiva

Essa alteração pode afetar a compatibilidade da fonte.

Motivo da mudança

Foi adicionado suporte para serviços chaveados para anotar parâmetros como não chaveados. Essa alteração permite que os desenvolvedores indiquem explicitamente quando um parâmetro deve ser resolvido sem uma chave, o que é particularmente útil em cenários em que os serviços com e sem chave são registrados para o mesmo tipo.

Ajuste qualquer código que use FromKeyedServicesAttribute.Key para processar valores de null.

APIs afetadas