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

    C#反射实例讲解


    1 创建用于反射使用的DLL

    新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)
     
     1using System;
     2
     3namespace 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}
    34
    35
    36

    2 应用于反射的例子

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


     1public 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  }
    35

  • 相关阅读:
    Linux常用命令
    IBM Java多线程 1. 线程基础
    IBM Java多线程 6.其它线程 API 详细信息
    Jakarta Commons Logging学习笔记
    Linux 下存放ssh信息的文件位置
    ArrayList的使用方法
    JAVA基础--JAVA中的反射机制详解
    使用 Bash shell脚本进行功能测试
    log4j详细解
    Eclipse Template用法探讨
  • 原文地址:https://www.cnblogs.com/chorrysky/p/571305.html
Copyright © 2011-2022 走看看