kitlau
kitlau

kitlau's blog

DependencyInjection


还在背依赖注入的概念?不如自己写一个依赖注入框架

本篇博客以依赖注入(DI)框架为例,详细介绍了如何从零开始构建一个DI框架。首先,博客讲解了DI的基本概念,包括服务、服务描述符和服务提供者。接着,通过创建一个KServiceCollection类,实现了DI的基础功能。然后,通过使用KServiceCollection类创建一个KServiceProvider类,实现了服务的获取和注入。在此基础上,博客进一步讲解了如何通过创建单例和瞬态服务,实现不同生命周期的管理。最后,通过在控制台项目中创建新服务和重写Program.cs文件,进行了DI框架的测试。 此篇博客深入浅出地讲解了DI框架的构建过程,旨在帮助读者更好地理解DI的概念和应用。同时,博客也提出了一些有趣的问题,比如如何解决null值检查的问题,如何约束TImplement类型必须实现TService接口,如何实现Remove功能等,以引发读者的思考。而这些问题的解决,将是读者自己完成DI框架的关键步骤。 此外,博客也强调了编程学习的方式,批评了应试教育的学习方式,并指出这种方式对开发者创造力的扼杀。博客希望读者能够通过动手实践,真正理解和掌握编程知识。那么,你是否已经准备好,开始自己的DI框架构建之旅呢?--GPT 4

.NET DependencyInjection

你真的需要 Autofac 吗?Scrutor:更轻量的容器伴侣

这篇博客主要探讨了ServiceLocator反模式,以及如何使用轻量级的依赖注入扩展库Scrutor来取代Autofac。文章首先介绍了什么是ServiceLocator反模式,然后详细讲解了如何使用Scrutor的多种方法,包括如何通过“扫描”或“匹配”来注册服务,如何以“接口,实现”的方式注册,如何限制只注册某些命名空间中的服务,如何修改默认的生命周期,如何为每一对服务和接口都指定不同的生命周期,以及如何使用Attribute标记方式。文章还特别指出,许多人选择Autofac,是为了使用它的装饰器模式,如果你是因为这个原因而选择了Autofac,那么Scrutor是你取代Autofac的不二之选。最后,文章提出了一个引人深思的问题:你的项目真的有必要引入Autofac吗?如果你的项目只是为了扫描程序集来批量注册,或者为了实现装饰器模式,那么你完全可以使用Scrutor来取代它。--GPT 4

.NET DependencyInjection

  • 1