本文介绍了KeyedService在.NET 6 RC1版中的使用方法,修正了错误,支持多种方式,给出了代码示例。
在.NET 8中,引入了KeyedService,用自定义关键字来使用服务。通过命名关键字来区分注入的多个接口子类,并在使用时调用。示例中,INotifyService接口有两个子类,SMSService和EMailService,它们调用不同的Respository。还介绍了使用类SMS和EMail,以及另一种简化的写法。总体而言,对于KeyedService的使用感觉有限制,希望在正式版本中有所改善。
.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。
完成下面两步后,将自动完成登录并继续当前操作。