C# 如何实现控制反转(依赖注入)
来源:互联网 发布:ppt批量导入照片mac 编辑:程序博客网 时间:2024/06/10 13:38
控制反转 优点:
1、扩展时代码修改最小化。
2、组件可热插拔。
3、可配置性强。
控制反转原理,这里不介绍网上多多。请查看百度控制反转原理,大家都用过实例对象工厂模式如下:
/// <summary> /// 系统配置光雷达厂家类型 /// </summary> /// <returns></returns> public static string SysLidarType() { try { string strlidartype = System.Configuration.ConfigurationManager.AppSettings["SysLidarType"].ToString(); return strlidartype; } catch (Exception ex ) { throw ex; } } /// <summary> ///获取系统配置激光雷达对象实例 /// </summary> /// <returns></returns> public static ReadLidarDataBase GetReadLidarDataInstance() { string syslidartypestr = SysLidarType(); switch (syslidartypestr) { case "LidarData_ZKGD"://中科光电激光雷达 return new LidarData_ZKGD(); case "LidarData_LD"://蓝盾激光雷达 return new LidarData_LD(); default: return new LidarData_LD(); } }
以上代码是Web.config 配置那个类型字符串后,来判断生成对应对角实例。没有完全意思的实现代码解耦,如添加一个新的子类是还要在GetReadLidarDataInstance方法中添加代码。为解决以上两个问题,我们采用.Net 中的反射技术来实现控制反转。以下用.Net 中的反射技术,实现可配置生成对象实例,并以单例模式记录到容器列表中./// <summary> /// 激光雷达数据解析类列表 /// </summary> public static Dictionary<Type, object> Readlidardata = new Dictionary<Type, object>(); /// <summary> ///获取系统配置激光雷达对象实例 /// </summary> /// <returns></returns> public static ReadLidarDataBase GetReadLidarDataInstance() { ReadLidarDataBase ReadLidarInstance = null; Type lidartype = Type.GetType(SysLidarType()); if (!Readlidardata.ContainsKey(lidartype)) { ReadLidarInstance = (ReadLidarDataBase)Activator.CreateInstance(lidartype, null); Readlidardata.Add(lidartype, ReadLidarInstance); } else { ReadLidarInstance = (ReadLidarDataBase)Readlidardata[lidartype]; } return ReadLidarInstance; // string syslidartypestr = SysLidarType(); // switch (syslidartypestr) // { // case "LidarData_ZKGD"://中科光电激光雷达 // return new LidarData_ZKGD(); // case "LidarData_LD"://蓝盾激光雷达 // return new LidarData_LD(); // default: // return new LidarData_LD(); // } }
阅读全文
0 0
- C# 如何实现控制反转(依赖注入)
- 如何理解依赖注入和控制反转
- spring实现控制反转与依赖注入
- 依赖注入&控制反转
- 控制反转&依赖注入
- C#的接口实现的依赖倒置、控制反转、依赖注入
- 控制反转(依赖注入)IoC
- IOC控制反转(依赖注入思想)
- 栗子:控制反转(依赖注入)IOC
- IoC模式(控制反转、依赖注入)
- spring依赖注入(反转控制)
- IoC模式(控制反转、依赖注入)
- 依赖注入(控制反转)IOC
- Java依赖注入(控制反转)
- 工厂模式,控制反转(依赖注入)
- Java的依赖注入(控制反转)
- 依赖注入 控制反转(3)
- 理解依赖注入(控制反转)!
- 如何设置jquery的ajax方法为同步
- android自定义view--Paint和Canvas
- 单点登录(三)-----实战-----cas server 源码下载和部署
- Qt利用线程进行数据更新
- PHP基于libevent的webSocket连接实例
- C# 如何实现控制反转(依赖注入)
- STS或eclipse安装SVN插件
- 关于GIS的思考
- bzoj3223 Tyvj 1729 文艺平衡树 (splay)
- Git commit消息中附带jira_id/issue_id
- Hibernate的悲观锁和乐观锁(1)
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量
- 【JZOJ5482】第三题
- 载入内存,让程序运行起来