程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#反射技術之讀取和設置類的屬性(3)

C#反射技術之讀取和設置類的屬性(3)

編輯:關於C語言

下面通過例題對該方法進行簡單應用(我一直以為,要讓例題起到更容易理解文字的意義和作用,撰寫的例題越簡單越直觀越好。)

using System;
using System.Reflection;
& nb
 namespace ConsoleApplication9
{
  class Love
  {
    public int fIEld1;
    private string _name;
    public Love()
    {
    }
    public string Name
    {
      get
      {
        return _name;
}
      set
      {
        _name=value;
      }
    }
    public int GetInt(int a)
    {
      return a;
    }
    public void Display(string str)
    {
      Console.WriteLine(str);
    }
  }
  /// <summary>
  /// Class1 的摘要說明。
  /// </summary>
  class Class1
  {
    /// <summary>
    /// 應用程序的主入口點。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
      //
      // TODO: 在此處添加代碼以啟動應用程序
      //
      Love love = new Love();
      Type type = love.GetType();
      Object obj = type.InvokeMember(null,
        BindingFlags.DeclaredOnly |
        BindingFlags.Public | BindingFlags.NonPublic |
        BindingFlags.Instance | BindingFlags.CreateInstance, null, null, args);
      //調用沒有返回值的方法
      type.InvokeMember("Display",BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance , null , obj , new object[]{"aldfjdlf"});
      //調用有返回值的方法
      int i = (int)type.InvokeMember("GetInt",BindingFlags.InvokeMethod | BindingFlags#0000cc">.Public | BindingFlags.Instance,null,obj,new object[]{1});
Console.WriteLine(i);
      //設置屬性值
      type.InvokeMember("Name",BindingFlags.SetProperty,null,obj,new string[]{"abc"});
      //獲取屬性值
      string str=(string)type.InvokeMember("Name",BindingFlags.GetProperty,null,obj,null);
      Console.WriteLine(str);
      //設置字段值
      type.InvokeMember("field1",BindingFlags.SetFIEld,null,obj,new object[]{444});
      //獲取字段值
      int f=(int)type.InvokeMember("field1",BindingFlags.GetFIEld,null,obj,null);
      Console.WriteLine(f);
      Console.ReadLine();
    }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved