狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 反射 Reflection 進階

admin
2024年3月30日 23:55 本文熱度 1019

反射是C#編程中的一個重要特性,它允許程序在運行時獲取和操作對象的信息,而無需事先創(chuàng)建對象或者指定對象的具體實現(xiàn)。通過反射,程序可以動態(tài)地創(chuàng)建、獲取、修改和刪除對象,從而實現(xiàn)更加靈活和強大的編程能力。

反射的實現(xiàn)依賴于程序運行時的環(huán)境,其中包括.NET框架中的類型信息和字段、方法、屬性等信息。在C#中,程序可以通過System.Reflection命名空間中的類和接口來訪問和操作這些信息。例如,使用Type類可以獲取指定類型的類名、方法名、字段名等信息;使用MethodInfo類可以獲取指定方法的方法名、參數(shù)類型、返回值類型等信息;使用FieldInfo類可以獲取指定字段的字段名、數(shù)據(jù)類型、訪問權(quán)限等信息。

正文


通過Type創(chuàng)建一個類的實例

做一個基礎(chǔ)類Machine

public class Machine

{

    public string Name { get; set; }

    public string Location { get; set; }


    public decimal Amount = 1;


    public Machine()

    {


    }


    public Machine(string name, string location)

    {

        Name = name;

        Location = location;

    }


    public bool Run()

    {

        MessageBox.Show(this.Name+" "+"Run" + DateTime.Now.ToString());

        return true;

    }


    public void Stop()

    {

        MessageBox.Show(this.Name + " " + "Stop" + DateTime.Now.ToString());

    }

}

實例化這個類

private void btnCreateClass_Click(object sender, EventArgs e)

{

    Type t = Type.GetType("s77.Machine");

    //構(gòu)造器的參數(shù)

    object[] args = new object[] { "設(shè)備2", "北京", 9000 };

    //創(chuàng)建對象

    object obj =Activator.CreateInstance(t,new object[] {"設(shè)備2","北京"});

    //獲取方法的信息

    MethodInfo method = t.GetMethod("Run");

    //調(diào)用方法的一些標志位,這里的含義是Public并且是實例方法,這也是默認的值

    BindingFlags flag = BindingFlags.Public | BindingFlags.Instance;

    method.Invoke(obj,new object[] { });    

}

動態(tài)創(chuàng)建一個委托

調(diào)整一個Machine 類

delegate string DeleStatus(string name);

public class Machine

{

    public string Name { get; set; }

    public string Location { get; set; }

    public decimal Amount = 1;


    public Machine()

    {


    }


    public Machine(string name, string location)

    {

        Name = name;

        Location = location;

    }


    public bool Run()

    {

        MessageBox.Show(this.Name+" "+"Run" + DateTime.Now.ToString());

        return true;

    }


    public void Stop()

    {

        MessageBox.Show(this.Name + " " + "Stop" + DateTime.Now.ToString());

    }


    public string Status(string name)

    {

        return name+" OK";

    }

}

調(diào)用

private void btnCreateDelegate_Click(object sender, EventArgs e){
    Type t = Type.GetType("s77.DeleStatus");//取得委托Type
    DeleStatus method = (DeleStatus)Delegate.CreateDelegate(t, machine, "Status");//創(chuàng)建委托
    string ret = method("設(shè)備");
    MessageBox.Show(ret);
}


該文章在 2024/3/30 23:56:16 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務費用、相關(guān)報表等業(yè)務管理,結(jié)合碼頭的業(yè)務特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved