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   }  
  • 相关阅读:
    报错:/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512vlintrin.h(11269): error: argument of type "void *" is incompatible with parameter of type "long long *"
    docker跨平台
    [转载]启发式算法 (Heuristic Algorithms)
    linux软链接的创建、修改和删除
    使用docker部署tomcat|tomcat基础使用第二篇
    Tomat服务器学习
    使用秘钥登录AWS
    Maven基础
    [转载]什么是消融实验
    [转载]基于机器学习的专业级摄影照片处理器
  • 原文地址:https://www.cnblogs.com/eric_ibm/p/Reflection.html
Copyright © 2011-2022 走看看