FromKeyedServicesAttribute.Key 可以为 null

FromKeyedServicesAttribute.Key 已从非可空的 object 更改为可空的 object?,以支持非键控服务和继承场景中的 null 值。

已引入的版本

.NET 8

以前的行为

以前,FromKeyedServicesAttribute.Key 被声明为不可为 null 的 object

public object Key { get; }

新行为

从 .NET 8 开始,FromKeyedServicesAttribute.Key 现在声明为可为object?null:

public object? Key { get; }

一个 null 值指示没有键,并且仅使用参数类型来解析服务。 这对于需要显式声明参数应为无键服务解析的依赖注入实现非常有用。 值 null 还用于继承场景,以指示密钥应从父范围继承。

破坏性变更的类型

此更改可能会影响 源兼容性

更改原因

为了提供对键控服务的支持,可以将参数标注为无键参数。 通过此更改,开发人员可以显式指示何时应解析参数而不使用键,这对于为同一类型注册键和未键服务的情况特别有用。

调整任何使用 FromKeyedServicesAttribute.Key 处理 null 值的代码。

受影响的 API