• 一个浅显易懂的反射例子


    反射,就是程序集的一面镜子,所以才叫反射.废话少说,以一个简单的例子切入正题吧:
    1 创建用于反射使用的DLL
    新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)
    代码如下:
    using System;

    namespace Webtest
    {
        
    /// <summary>
        
    /// Summary description for ReflectTest.
        
    /// </summary>

        public class ReflectTest
        
    {
            
    public ReflectTest()
            
    {
                
    //
                
    // TODO: Add constructor logic here
                
    //
            }

            
    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 "您使用的是无参数方法";
          }

        }

    }


     应用于反射的例子

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

    private void Button1_Click(object sender, System.EventArgs e)
            
    {
                System.Reflection.Assembly ass;
                Type type ;
                
    object obj;
                
    try
                
    {
                    ass 
    = System.Reflection.Assembly.LoadFile(@"C:\TestReflect\ReflectQuickStart\TestReflect\bin\Debug\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;
                }


            }

    以上是本人的粗浅理解,但是倒是可以作为一个入门的例子.just keep it simple and stupid.

  • 相关阅读:
    超简单的网页选项卡---jQuery
    【java+selenium3】Actions模拟鼠标 (十一)
    【java+selenium3】JavaScript的调用执行 (十)
    【java+selenium3】时间控件 (九)
    【java+selenium3】select 下拉选 (八)
    【java+selenium3】隐式等待+显式等待 (七)
    【java+selenium3】线程休眠方法 (六)
    【java+selenium3】模态框处理(五)
    【java+selenium3】多窗口window切换及句柄handle获取(四)
    【java+selenium3】特殊元素iframe的定位及详解(三)
  • 原文地址:https://www.cnblogs.com/engine1984/p/1032078.html
Copyright © 2020-2023  润新知