1. public static T GetInstance<T>(Assembly assembly, string fullNamespace)
  2. {
  3. return (T)assembly.CreateInstance(fullNamespace);
  4. }
  5.  
  6. public static T GetInstance<T>(string assemblyName, string fullNamespace)
  7. {
  8. var path = GetFullAssemblyPath(assemblyName);
  9. return (T)Assembly.LoadFile(path).CreateInstance(fullNamespace);
  10. }
  11.  
  12. public static object GetInstance(string assemblyName, string fullNamespace)
  13. {
  14. var path = GetFullAssemblyPath(assemblyName);
  15. return Assembly.LoadFile(path).CreateInstance(fullNamespace);
  16. }
  17.  
  18. public static object GetInstance(string typeInfo)
  19. {
  20. string[] types = typeInfo.Split(',');
  21. object tempObject = null;
  22. if (types.Length == 1)
  23. {
  24. tempObject = GetInstance<Object>(typeof(ReflectionHelper).GetType().Assembly, types[0].Trim());
  25.  
  26. }
  27. else if (types.Length == 2)
  28. {
  29. tempObject = GetInstance<Object>(types[1].Trim(), types[0].Trim());
  30. }
  31.  
  32. return tempObject;
  33. }
  34.  
  35. public static Type GetType(Assembly assembly, string fullNamespace)
  36. {
  37. return assembly.CreateInstance(fullNamespace).GetType();
  38. }
  39.  
  40. public static Type GetType(string assemblyName, string fullNamespace)
  41. {
  42. Assembly assembly = Assembly.LoadFile(GetFullAssemblyPath(assemblyName));
  43. return GetType(assembly, fullNamespace);
  44. }
  45.  
  46. public static Type GetType(string typeInfo)
  47. {
  48. string[] types = typeInfo.Split(',');
  49. Type tempType = null;
  50. if (types.Length == 1)
  51. {
  52. tempType = GetType(typeof(ReflectionHelper).Assembly, types[0]);
  53. }
  54. else if (types.Length == 2)
  55. {
  56. tempType = GetType(types[1].Trim(), types[0].Trim());
  57. }
  58.  
  59. return tempType;
  60. }
  61.  
  62. public static T GetInstanceFromXml<T>(string typeInfo, string filePath)
  63. {
  64. Type configType = GetType(typeInfo);
  65.  
  66. if (configType == null)
  67. {
  68. throw new Exception(string.Format("occur error when initialize {0}!", filePath));
  69. }
  70.  
  71. return XmlHelper.ConvertToObject<T>(configType, filePath);
  72. }
  73.  
  74. public static string GetFullAssemblyPath(string assemblyName)
  75. {
  76. var path = AppDomain.CurrentDomain.BaseDirectory;
  77. var debugPath = @"bin\Debug\";
  78. if (!path.Substring(path.Length - debugPath.Length - 1, debugPath.Length)
  79. .ToLower().Equals(debugPath.ToLower()))
  80. {
  81. path = string.Concat(path, @"bin\");
  82. }
  83.  
  84. return string.Concat(path, assemblyName);
  85. }

  

ReflectionHelper的更多相关文章

  1. ABP源码分析二十六:核心框架中的一些其他功能

    本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSess ...

  2. 解析大型.NET ERP系统 分布式应用模式设计与实现

    C/S架构的应用程序,将一些复杂的计算逻辑由客户端转移到服务器端可以改善性能,同时也为了其它方面的控制..NET Remoting在局域网内调用的性能相当不错.ERP系统中基于.NET Remotin ...

  3. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

  4. 解析大型.NET ERP系统核心组件 查询设计器 报表设计器 窗体设计器 工作流设计器 任务计划设计器

    企业管理软件包含一些公共的组件,这些基础的组件在每个新项目立项阶段就必须考虑.核心的稳定不变功能,方便系统开发与维护,也为系统二次开发提供了诸多便利.比如通用权限管理系统,通用附件管理,通用查询等组件 ...

  5. C/S架构应用程序开发培训笔记

    最近为客户组织了一项C/S架构程序的开发培训,讲解C/S应用程序开发中需要注意的点. 我主要是做C/S方面的ERP/CRM程序开发,界面是用Windows Forms技术,有遗漏或错误的地方欢迎批评指 ...

  6. 4.6 .net core依赖注入的封装

    现在流行的系统一般都采用依赖注入的实现方式,利用DI容器来直接获取所用到的类/接口的实例..net core也一样采用DI的方式,提供了DI容器的接口IServiceCollection,并提供了基于 ...

  7. 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法

    首先需要说明的是这是.net framework的一个组件,而不是针对.net core的.目前工作比较忙,因此.net core的转换正在编写过程中,有了实现会第一时间贴出来. 接下来进入正题.对于 ...

  8. Loogn.OrmLite映射优化记录

    大家对ORM效率的争议多半在映射性能方面.自己的ORMLite也是如此,经过前段时间的折腾,已经找不出一个简单的方法再提升一下这部分的方法了.在此把优化涉及的几点记录一下. 注:用于性能测试的Code ...

  9. C# 利用反射根据类名创建类的实例对象

    “反射”其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间. 1.假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型): ...

随机推荐

  1. 淘宝UWP桌面版已经发布

    目前正在等待应用商店的检测,很快会可以下载. 谢谢各位园主针对淘宝UWP 桌面版(又叫PC版,HD版等等)给予的feedback,在这里统一回复一下,就不一一感谢了. 有一件事需要说明一下,请看下图: ...

  2. Java对象表示方式2:XStream实现对对象的XML化

    上一篇文章讲到了使用Java原生的序列化的方式来表示一个对象.总结一下这种对象表示方式的优缺点: 1.纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持 ...

  3. css实现左栏固定右栏自适应,高度自适应的布局

    收集css中的基础知识,所以这并不是什么新鲜的技术,只是作为备忘~本文的内容如题所示,是一个简单的布局,用于左右两栏布局的页面,左侧是固定宽度,右侧占据剩余的宽度.在垂直方向,始终以高度最大的一栏为基 ...

  4. Atitit 基于图片图像 与文档混合文件夹的分类

    Atitit 基于图片图像 与文档混合文件夹的分类 太小的文档(txt doc csv exl ppt pptx)单独分类 Mov10KminiDoc 但是可能会有一些书法图片迁移,因为他们很微小,需 ...

  5. Yii2框架RESTful API教程(一) - 快速入门

    前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RE ...

  6. spring cvc-elt.1: Cannot find the declaration of element 'beans'解决办法

    转载自http://blog.csdn.net/legendj/article/details/9950963 今天在写spring aop示例的时候,在spring.xml文件中添加spring a ...

  7. MySQL5.7.13源码编译安装指南

    系统 CenterOs 6.5 1.安装依赖包(cmake make gcc等,其实好多都有了,不需要更新,为了防止世界被破坏,就装下) yum install gcc gcc-c++ -yyum i ...

  8. dropzone的使用方法

    http://www.renfei.org/blog/dropzone-js-introduction.html dropzone.js 是一个开源的 JavaScript 库,提供 AJAX 异步上 ...

  9. JAVA EE Hibernate基础一之环境配置

    对于JAVA开发高级,hibernate是java三大框架之一,足以见得它的重要性,那么对于hibernate的使用大家有了解多少呢?从今天开始我将带领大家一道共同探讨一下hibernate的知识,h ...

  10. 编译原理简单语法分析器(first,follow,分析表)源码下载

    编译原理(简单语法分析器下载) http://files.cnblogs.com/files/hujunzheng/%E5%8A%A0%E5%85%A5%E5%90%8C%E6%AD%A5%E7%AC ...