zoukankan      html  css  js  c++  java
  • C#反射实例讲解

    C#反射实例讲解

    创建用于反射使用的DLL

    新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)

     1 using System;  
     2 
     3 namespace Webtest  
     4 {  
     5  /**//// <summary>  
     6  /// ReflectTest 的摘要说明。  
     7  /// </summary>  
     8   public class ReflectTest  
     9  {  
    10   public ReflectTest()  
    11   {}  
    12   
    13   public string WriteString(string s)  
    14   {  
    15    return "欢迎您," + s;  
    16   }  
    17   
    18  /**//// <summary>  
    19   /// dsajkjflasjdfalksdjfaskfd  
    20   /// </summary>  
    21   /// <param name="s"></param>  
    22  /// <returns></returns>  
    23   public static string WriteName(string s)  
    24   {  
    25    return "欢迎您光临," + s;  
    26   }  
    27   
    28   public string WriteNoPara()  
    29   {  
    30    return "您使用的是无参数方法";  
    31   }  
    32  }  
    33 }  
    应用于反射的例子

    在ASPNET页面中加入以下函数:

     1 public void test1()  
     2   {  
     3     System.Reflection.Assembly ass;  
     4    Type type ;  
     5    object obj;  
     6    try  
     7    {  
     8      ass = System.Reflection.Assembly.LoadFile(@"d:/TestReflect.dll");  
     9     type = ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称  
    10     System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称  
    11     obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称  
    12    string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); //实例方法的调用  
    13    
    14     Response.Write(s+"<br>");  
    15     method = type.GetMethod("WriteName");//方法的名称  
    16     s = (string)method.Invoke(null,new string[]{"jianglijun"}); //静态方法的调用  
    17     Response.Write(s+"<br>");  
    18   
    19   method = type.GetMethod("WriteNoPara");//无参数的实例方法  
    20    s = (string)method.Invoke(obj,null);  
    21     Response.Write(s+"<br>");  
    22    method = null;  
    23    }  
    24    catch(Exception ex)  
    25    {  
    26     Response.Write(ex+"<br>");  
    27    }  
    28   finally  
    29   {  
    30    ass = null;  
    31     type = null;  
    32     obj = null;  
    33    }  
    34   }  
  • 相关阅读:
    JFinal连接多个数据库
    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) net start mysql服务名无效
    oracle中文显示为问号
    IDEA开发环境的设置约定
    WSL distro导入导出
    Linux服务器的x11图形模式方式远程管理参考
    WSL Linux 的 Windows 子系统[笔记]
    devops-cd之esxi和docker实战
    devops-cd之vagrant virtualbox实战
    ansible高级使用知识点
  • 原文地址:https://www.cnblogs.com/eric_ibm/p/Reflection.html
Copyright © 2011-2022 走看看