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   }  
  • 相关阅读:
    Linux基础知识
    redis info
    记录: 解决 pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)
    IOS IAP 自动续订 之 利用rabbitmq延时队列自动轮询检查是否续订成功
    Python3.6 的字典为什么会快
    IAP 订阅后端踩坑总结之 Google 篇
    docker 命令合集
    Python Schema使用说明
    Apache Bench测试
    channels2.X 学习笔记
  • 原文地址:https://www.cnblogs.com/eric_ibm/p/Reflection.html
Copyright © 2011-2022 走看看