自己搭建IOC容器(C#)(一)总的思路和想法
自己搭建IoC容器(C#)1. 实现容器基本的类和功能(注册和获取)2. 实现特性attribute自动注册3. 实现配置文件注册4. 实现构造函数注入
·
目的:
更好的学习和了解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
自己实现具体的思路和想法:
- 实现容器基本的类和功能 (二)实现Ioc容器基本功能
(1) 实现单类型注册和获取
(2) 实现接口和实体类映射关系注册和获取 - 实现不同的生命周期管理 (三)实现Ioc容器复杂功能
- 实现特性attribute自动注册 (四)实现自动注册
- 实现构造函数注入 (五)实现构造方法注入
- 实现配置文件注册
- 实现特殊需求:多个接口指向同个类,实现多个接口指向唯一对象
- 其他需求…
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)