当前位置:  开发笔记 > 编程语言 > 正文

AspNet Core DI:TryAdd vs Add用法

如何解决《AspNetCoreDI:TryAddvsAdd用法》经验,为你挑选了1个好方法。

来源有评论说TryAdd如果版本已经注册,则版本不会添加服务IServiceCollection.但是docs没有提到这种方法.应该什么时候使用?



1> Joe Audette..:

通常,如果您有一个具有依赖项的库,您将创建一个IServiceCollection的扩展方法,该库的使用者将从启动时调用以连接默认依赖项.

当只应使用接口的一个实现时,.TryAdd在扩展方法中很有用.然后,如果有人想要覆盖默认实现,他们可以调用您的扩展方法之前注册它,并且由于他们的实现首先注册,因此TryAdd不会添加任何内容.

如果在您的扩展方法中使用.Add,则可以通过在调用扩展方法注册其实现来覆盖默认实现.但是在这种情况下仍然存在多个实现注册,因此可以依赖于IFoo的IEnumerable并获得已注册的所有实现.但如果他们依赖于IFoo,他们只会获得默认值,即最后一个添加的.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有