目的:

更好的学习和了解IOC容器的原理和技术,同时尝试一下实现自己特殊的需求,写着玩

理论

IOC 英文全称:Inversion of Control 中文:控制反转
与Ioc相关的概念:DI 英文全称:Dependency Injection 中文:依赖注入

正常情况获取一个对象,就直接需要调用的类或者方法中new一个对象,这样因为业务逻辑的需要几个类就耦合在一起,一个类的实现就依赖于另一个类。
控制反转,就是通过第三方容器或者类似一个控制系统,来管理类的实例化和生命周期,在其创建时,将他需要的对象注入进去,并且通过抽象和接口,将方法定义和实现分开,在使用时只关心抽象的接口,不关心具体的实现,其他的都由容器来控制实现,减少了上层对下层的依赖,不同层之间或者不同模块之间只通过接口交互。

常见的Ioc容器:

Autofac https://github.com/autofac/Autofac
Unity(Ioc) 好像不再维护了

WPF常用的MVVM框架自带IOC容器,如:mvvmlight,stylet
ASP.Net core 内置IOC

自己实现具体的思路和想法:

  1. 实现容器基本的类和功能 (二)实现Ioc容器基本功能
    (1) 实现单类型注册和获取
    (2) 实现接口和实体类映射关系注册和获取
  2. 实现不同的生命周期管理 (三)实现Ioc容器复杂功能
  3. 实现特性attribute自动注册 (四)实现自动注册
  4. 实现构造函数注入 (五)实现构造方法注入
  5. 实现配置文件注册
  6. 实现特殊需求:多个接口指向同个类,实现多个接口指向唯一对象
  7. 其他需求…

源码下载

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐