.NET 8 中的 KeyedService
💡
原文中文,约9300字,阅读约需23分钟。
📝
内容提要
.NET 8在Preview 7中引入了KeyedService支持,可以方便按名称获取服务。示例展示了基本使用和使用KeyedService.AnyKey捕获未注册的服务的情况。KeyedService还有一些特殊情况,如允许为null的serviceKey,但实际上为null时不是keyed service。构造函数中可以使用ServiceKeyAttribute获取注册的serviceKey。对于scoped service的支持有问题。可以结合Options实现基于options的named service。总体来说,KeyedService解决了一些named service的问题,但还有一些bug。
🎯
关键要点
- .NET 8 在 Preview 7 中引入了 KeyedService 支持,方便按名称获取服务。
- 示例展示了基本使用和使用 KeyedService.AnyKey 捕获未注册服务的情况。
- KeyedService 允许为 null 的 serviceKey,但实际为 null 时不是 keyed service。
- 构造函数中可以使用 ServiceKeyAttribute 获取注册的 serviceKey。
- 对于 scoped service 的支持存在问题,使用时可能会发生异常。
- 可以结合 Options 实现基于 options 的 named service。
- 总体上 KeyedService 解决了一些 named service 的问题,但仍存在一些 bug。
➡️