FromKeyedServicesAttribute.Key может иметь значение NULL

FromKeyedServicesAttribute.Key было изменено с ненулевого значения на значение NULL objectobject? для поддержки значений NULL для неподключенных служб и сценариев наследования.

Представленная версия

.NET 8

Предыдущее поведение

FromKeyedServicesAttribute.Key Ранее был объявлен как не допускающий objectзначения NULL:

public object Key { get; }

Новое поведение

Начиная с .NET 8, FromKeyedServicesAttribute.Key теперь объявлен как nullable object?.

public object? Key { get; }

Значение null указывает, что ключ отсутствует, и для разрешения службы используется только тип параметра. Это полезно для реализаций внедрения зависимостей, которые требуют явного способа указать, что параметр должен быть разрешен для неключевых сервисов. null Значение также используется в сценариях наследования, чтобы указать, что ключ должен наследоваться от родительского контекста.

Тип разрушающего изменения

Это изменение может повлиять на совместимость исходного кода .

Причина изменения

Была добавлена поддержка для служб с ключами, чтобы аннотировать параметры как без ключа. Это изменение позволяет разработчикам явно указывать, когда параметр должен разрешаться без ключа, что особенно полезно в сценариях, когда для одного типа регистрируются как службы с ключом, так и без ключа.

Настройте любой код, который использует FromKeyedServicesAttribute.Key, чтобы обрабатывать значения null.

Затронутые API