定义:
可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道

同一个功能不用反射同样能实现,那为什么一定要用反射,一直不太明白他的作用,但C#里推崇较甚,今天到网上查了段反射动态调用DLL类库的代码,调试了下通过了

说明:通过System.Reflection.Assembly动态调用classTest.dll 中GetStr(string strValue)的方法,而不做添加引用操作
      classTest.dll 包含方法 public static string GetStr(string strValue);参数是什么则返回什么
      测试DLL下载:/Files/lmjob/classTest.rar

代码如下:

System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFile("D:\\ProjectTest\\classTest\\classTest\\bin\\Debug\\classTest.dll");  //通过路径载入动态库
        Type t = asm.GetType("classTest.Class1");  //得到Class
        System.Reflection.ConstructorInfo conn = t.GetConstructor(new Type[0]); //获取没有参数的构造函数 
        object a1 = conn.Invoke(new object[0]);  //调用没有参数的构造函数Invoke,返回object它其是a类
        System.Reflection.MethodInfo meth = t.GetMethod("GetStr", new Type[] { typeof(String) }); //获取参数类型为string,函数名为GetStr的方法
        string aa = meth.Invoke(a1, new object[] { "我是中国人" }).ToString(); //在a1上调用GetStr方法,参数为"我是中国人"

Response.Write("值:" + aa);    //输入值    正确结果为“我是中国人”

补充一、通过Load反射创建实例:
System.Reflection.Assembly ass = System.Reflection.Assembly.Load("Xys.METS.Model");
Xys.METS.Model.DUTY_INFO info = (Xys.METS.Model.DUTY_INFO )ass.CreateInstance
("Xys.METS.Model.DUTY_INFO");

info.DutyName = "aaa";

Response.Write(info.DutyName);

反射动态调用DLL类库测试相关推荐

  1. C#程序实现动态调用DLL的研究(转)

    摘 要:在<csdn开发高手>2004年第03期中的<化功大法--将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...

  2. C# 利用反射动态调用类成员

    使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下: public object InvokeMember( string name, BindingFla ...

  3. (C#)利用反射动态调用类成员[转载]

    使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember(    string name ...

  4. 利用反射动态调用类成员C#

    使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember(    string name ...

  5. 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?(转)...

    通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明导出函数? [已结贴,结贴人:darongtou] 如题,网上搜了N多资料,一直找不 ...

  6. Delphi中动态调用DLL的方法

    Delphi中动态调用dll的方法如下: function CallFunc(dllname, funcname: string; const param: array of const): DWOR ...

  7. C# 知识点笔记:IEnumerable的使用,利用反射动态调用方法

    IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { " ...

  8. GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数?

    GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数? 通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern " ...

  9. VB静态调用与动态调用dll详解

    [[请注意]]:在以下语法格式中,请注意 [函数名] 的[大小写]!!! 静态与动态比较: 静态调用简单,动态调用麻烦:静态调用占用资源多,动态调用占用资源少:正所谓鱼和熊掌不可兼得. 静态调用定义: ...

最新文章

  1. JedisConnectionException: java.net.SocketException: Broken pipe
  2. windows下mysql安装配置启动
  3. 产品运营必须知道的几个概念,什么是用户群体?
  4. LiveVideoStack上海2019八折截止最后一周
  5. python输出文本 去掉引号_Python可以在文本文件中读取时从字符串中删除双引号吗?...
  6. 一文理解图像处理之HOG特征
  7. 中国金融家俱乐部秋季论坛聚焦“自贸区将带来什么”展开论道
  8. T系统和应用集成-从SOA架构思想到服务架构规划设计
  9. Bug管理的流程和几个重点
  10. Linux内核学习笔记(2)-- 父进程和子进程及它们的访问方法
  11. STM8S103之外部中断
  12. c语言薛定谔方程,如何解薛定谔方程?-- k · p method
  13. 显卡compute capability7.5 Python3.5.2环境下编译配置caffe
  14. OV426+OVM6946基于FPGA调试成像
  15. idea打开文件显示多行,不隐藏
  16. 帝国cms网站管理系统之安全设置最优化分享
  17. java c HTML,javac html标签
  18. BIM自动识别三维地图:Revit自动识别三维地图流程方法
  19. WordPress批量修改数据库内文章内容文字关键字标题
  20. 点心云pcdn跑不起来解决办法(不起量)

热门文章

  1. Clojure开发OpenCV的简介
  2. 经典C语言程序100例之三二
  3. c#加入json库引用_C#如何通过匿名类直接使用访问JSON数据详解
  4. 设计模式重构代码_Duplicated Code (重复代码)如何处理?
  5. Sqoop(三)将关系型数据库中的数据导入到HDFS(包括hive,hbase中)
  6. 使用DOM解析常用方法
  7. 数据库元数据数据字典查询_8_列出给定表的默认约束
  8. python定义方法继承类_Python类的定义、继承及类对象使用方法简明教程
  9. supersocket缓冲区_supersockets接收过滤器(ReceiveFilter)
  10. faster-rcnn系列assert (boxes[:, 2] = boxes[:, 0]).all()和loss偶尔为nan的问题