说说KeyedService
💡
原文中文,约4500字,阅读约需11分钟。
📝
内容提要
在.NET 8中,引入了KeyedService,用自定义关键字来使用服务。通过命名关键字来区分注入的多个接口子类,并在使用时调用。示例中,INotifyService接口有两个子类,SMSService和EMailService,它们调用不同的Respository。还介绍了使用类SMS和EMail,以及另一种简化的写法。总体而言,对于KeyedService的使用感觉有限制,希望在正式版本中有所改善。
🎯
关键要点
- .NET 8引入了KeyedService,允许使用自定义关键字来区分多个接口子类的注入。
- INotifyService接口有两个子类:SMSService和EMailService,它们分别调用不同的Repository。
- 使用特性[FromKeyedServices]来指定关键字,但不能直接在app.Map方法中使用。
- 可以通过AddScoped方式注入SMS和EMail类,并使用AddKeyedScoped注册服务。
- 提供了错误的写法示例,说明如何不正确地使用KeyedService。
- 另一种简化写法是通过AddSingleton注入,并使用app.Services.GetRequiredKeyedService获取服务。
- 使用KeyedService的体验有限,存在一些限制,希望在正式版本中得到改善。
🏷️
标签
➡️