反射工厂【ReflectionFactory】
来源:互联网 发布:instabox 软件 编辑:程序博客网 时间:2024/06/16 10:00
/// <summary> /// 反射工厂 /// </summary> public static class ReflectionFactory { private static Dictionary<ETaskType, Type> mDic; /// <summary> /// 加载所有的可用的Task /// </summary> public static void LoadTask() { // 只加载一次 if (mDic != null) return; try { mDic = new Dictionary<ETaskType, Type>(); string strNamespace = typeof(TaskClass).Namespace; foreach (Type type in Assembly.GetExecutingAssembly().GetTypes()) { if (!IsTask(strNamespace, type)) continue; TaskClass obj = Activator.CreateInstance(type) as TaskClass; if (obj != null && !mDic.ContainsKey(obj.TaskType)) { mDic.Add(obj.TaskType, type); } } } catch (Exception) { } } /// <summary> /// 根据类型获取Task /// </summary> /// <param name="type"></param> /// <returns></returns> public static TaskClass GetTask(ETaskType type) { if (mDic == null) return null; // 规则约定 详细见 ETaskType 枚举注释 if ((int)type < (int)ETaskType.SimpleTask) { type = ETaskType.SimpleTask; } try { if (mDic.ContainsKey(type)) return Activator.CreateInstance(mDic[type]) as TaskClass; } catch (Exception) { } return null; } private static bool IsTask(string strNamespace, Type type) { return type.IsClass && !type.IsAbstract && strNamespace.Equals(type.Namespace) && type.IsSubclassOf(typeof(TaskClass)); } }
0 0
- 反射工厂【ReflectionFactory】
- 反射工厂
- 反射工厂
- 抽象工厂+反射=反射工厂
- 反射(二)反射工厂
- .NET的反射工厂
- 接口,工厂及反射
- 反射工厂模式
- 抽象工厂反射
- 配置文件+反射+简单工厂
- 工厂模式 + 反射改进
- C++ 工厂方法 反射
- java 反射工厂
- 接口,反射,工厂
- 工厂模式与反射
- 抽象工厂模式+反射
- 反射工厂模式
- 工厂模式中的反射
- 20140404 TCPL 第三章 标准库概览
- flash教程
- Armstrong 公理
- ORACLE大表删除部分数据的最佳方案
- eclipse4.2.2集成m2eclipse(在线集成,离线集成)
- 反射工厂【ReflectionFactory】
- WinCacheGrind配合XDebug分析PHP程序性能
- iOS基础界面UIViewController和导航介绍
- wpf布局
- cocos2dx ios android 读取资源问题
- 读《春秋》有感之九:戏之盟
- STL之vetor 排序
- c++中的五大内存分配!
- 优化Linux下的内核TCP参数来提高服务器负载能力