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   }  
  • 相关阅读:
    动态库的链接和链接选项-L,-rpath-link,-rpath
    SSL/TLS 握手过程详解
    数字证书及CA介绍
    sendto函数的坑
    如何捕捉并分析SIGSEGV的现场
    gdb进程调试,多进程调试
    linux下的守护进程daemon
    winform的水印TextBox
    Winform中的TextBox的小技巧
    WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptRes
  • 原文地址:https://www.cnblogs.com/eric_ibm/p/Reflection.html
Copyright © 2011-2022 走看看