课件和 Demo 地址
https://github.com/witskeeper/geektime
作者回复: TryAdd是在你不确定该服务是否曾经注册过时调用,MVC、RazorPages会共享不少组件,其注册服务的源码里,就大量用到了TryAdd。
RemoveAll是指你要移除某个服务类型的所有注册。
Replace可以在你期望替换某些已经注册了的服务时调用。
作者回复: 服务会被多次注册,GetServce获取服务时,会得到最后注册的那个,使用GetServces会得到所有注册的,与你注册顺序相同
作者回复: 推荐阅读一下官方文档https://docs.microsoft.com/zh-cn/
作者回复: 需要遍历,根据实际类型来判断。
如果特别需要对同一服务注册不同的类型并加以区分的话,可以使用第三方的依赖注入框架,支持命名注册
作者回复: 关于常用的API还是要知道的,官方文档是最好的获取途径
作者回复: 感谢支持
作者回复: 后注册的那个
作者回复: 实际场景中,线上环境通过修改配置来切换依赖注入的方式比较少见,一般依赖修改还涉及到包的依赖和回归测试,因此用配置文件没有明显优势。
作者回复: 感谢支持
编辑回复: 你好,是的,Web端无法下载。
作者回复: 例如管理数据库连接对象,每个用户请求范围内,使用同一个实例,处理响应完毕,由容器帮忙释放
作者回复: 从你的描述来看,你需要确定这两个需求是否是不同角色的诉求,或者是否是在解决不同的问题。
如果是,则分别设计API。
如果不是,说明两个业务诉求的目的是一致的,应该用一个接口可以满足。
不建议通过字段当作权限来判断不同的逻辑,这样会把两个不同的需求,耦合在一个API中。
作者回复: 这个主要看你注册服务的生命周期是单例的还是范围的
作者回复: 类似下面的代码,后面的章节有提到
IServiceCollection serviceCollection = new ServiceCollection(); //创建容器注册集合
IServiceProvider service = serviceCollection.BuildServiceProvider(); //构建容器
作者回复: 23号开始每周四更新
作者回复: Autofac 提供了 RegisterAssemblyTypes 能力可以实现类似的能力
作者回复: 内容需要照顾到对.NET Core不了解的人,感谢提出建议