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

     创建用于反射使用的DLL

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

    using System;
     
    namespace Webtest
     
    {
      
    /**//// <summary>
      
    /// ReflectTest 的摘要说明。
      
    /// </summary>

      public class ReflectTest
      
    {
      
    public ReflectTest()
      
    {}

      
    public string WriteString(string s)
      
    {
       
    return "欢迎您," + s;
      }


      
    /**//// <summary>
      
    /// dsajkjflasjdfalksdjfaskfd
      
    /// </summary>
      
    /// <param name="s"></param>
      
    /// <returns></returns>

      public static string WriteName(string s)
      
    {
       
    return "欢迎您光临," + s;
      }


      
    public string WriteNoPara()
      
    {
       
    return "您使用的是无参数方法";
      }

     }

    }


    2 应用于反射的例子

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

    public void test1()
     
    {
      System.Reflection.Assembly ass;
        Type type ;
        
    object obj;
        
    try
        
    {
         ass 
    = System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");
         type 
    = ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称
        System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称
        obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称
        string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); //实例方法的调用
       
        Response.Write(s
    +"<br>");
        method 
    = type.GetMethod("WriteName");//方法的名称
        s = (string)method.Invoke(null,new string[]{"jianglijun"}); //静态方法的调用
        Response.Write(s+"<br>");

        method 
    = type.GetMethod("WriteNoPara");//无参数的实例方法
        s = (string)method.Invoke(obj,null);
        Response.Write(s
    +"<br>");
        method 
    = null;
       }

       
    catch(Exception ex)
       
    {
        Response.Write(ex
    +"<br>");
       }

       
    finally
       
    {
       ass 
    = null;
        type 
    = null;
        obj 
    = null;
       }

      }
  • 相关阅读:
    [转] 百万级数据查询优化
    vs生成失败不报错
    C# 编译器错误对应代码详细信息
    使用XSL 样式表无法查看XML 输入。请更正错误然后单击刷新按钮
    vs中release模式调试和错误:CA0503:无法显示额外的代码分析警告或错误
    sp_executesql的用法
    一个for循环根据条件可以递增或递减
    Lc.exe已退出 代码为1
    将所有输出窗口文本重定向到即时窗口
    两步解决《内部服务器错误:500》
  • 原文地址:https://www.cnblogs.com/engine1984/p/863581.html
Copyright © 2011-2022 走看看