国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# 通過反射以及動態(tài)調(diào)用方法

這篇具有很好參考價值的文章主要介紹了C# 通過反射以及動態(tài)調(diào)用方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

有時候需要通過反射以及動態(tài)調(diào)用的辦法去調(diào)用已知的實例的方法,感覺還是挺巧妙的。以下主要記錄通過反射以及動態(tài)的調(diào)用方法。

  public class Program
    {
        static void Main(string[] args)
        {
            IPerson person = new Peter();
            try 
            {
  
                System.Console.WriteLine("================反射機(jī)制===============");
                var p = person.GetType().GetMethod("WriteGirlFirendName");
                object[] a = new object[] { "beatiful", 21 };
                var r = p.Invoke(person, a);//帶參數(shù)及返回值的
                System.Console.WriteLine(r);
                p = person.GetType().GetMethod("Write");
                p.Invoke(person, null);//無參數(shù)和返回值的
            
                 System.Console.WriteLine("================動態(tài)機(jī)制===============");
                dynamic pp = person;
                var rr = pp.WriteGirlFirendName("girl", 20);//帶參數(shù)返回值的
                System.Console.WriteLine(rr);
                pp.Write();//無參數(shù)和返回值的

            }
            catch (Exception ex) 
            {
                System.Console.WriteLine(ex.Message);
            }
            System.Console.ReadLine();
        }

        public static void play()
        {
            string path = @"F:\Kwmusic\KwDownload\song\Alarm.wav";
            SoundPlayer player = new SoundPlayer(path);

            player.PlayLooping();

            Thread.Sleep(10000);
            System.Console.WriteLine("輸入1停止,2重放");

            System.Console.ReadLine();
            player.Stop();
        }
    }

    public interface IPerson
    {
        void GetName();
    }

    public class Peter : IPerson
    {
        public void GetName()
        {
            System.Console.WriteLine("name");
        }
        //帶參數(shù)
        public int WriteGirlFirendName(string name,int age)
        {
            System.Console.WriteLine($"{name} {age}");

            return age;
        }

        //不帶參數(shù)的
        public void Write()
        {
            System.Console.WriteLine("不帶參數(shù)方法。");
        }
    }

運行結(jié)果如下圖所示:
C# 通過反射以及動態(tài)調(diào)用方法,c#,開發(fā)語言
總結(jié):在已知方法的情況下,還是動態(tài)調(diào)用比較方便,但是要注意異常處理,畢竟這屬于特殊情況,編譯執(zhí)行前不會給提示的。文章來源地址http://www.zghlxwxcb.cn/news/detail-729222.html

到了這里,關(guān)于C# 通過反射以及動態(tài)調(diào)用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • gin通過反射來執(zhí)行動態(tài)的方法

    在gin中,可以通過反射來執(zhí)行對應(yīng)的方法。下面是一個示例: 在這個示例中,我們定義了一個 UserController 結(jié)構(gòu)體,并在結(jié)構(gòu)體中定義了 GetUser 方法和 queryUser 方法。 GetUser 方法用于處理請求并返回用戶數(shù)據(jù), queryUser 方法用于查詢用戶信息。 在主函數(shù)中,我們創(chuàng)建了 UserCon

    2024年02月14日
    瀏覽(23)
  • 【C#】Sql Server 設(shè)置IN查詢方法內(nèi)的參數(shù),固定參數(shù)、動態(tài)參數(shù)以及通過分隔含有逗號隔開的字符串轉(zhuǎn)數(shù)據(jù)集

    在平時使用sql語句查詢時,in查詢肯定少不了,多數(shù)用于一些數(shù)據(jù)統(tǒng)計或者測試類。in查詢并不建議放到實際常用的查詢列表里。 此篇文章主要簡單聊聊,in查詢方法內(nèi)的參數(shù)設(shè)置方式,以及通過分隔函數(shù)將含有逗號隔開的字符串轉(zhuǎn)為數(shù)據(jù)集進(jìn)行查詢 在 SQL Server 中,你可以使

    2024年02月15日
    瀏覽(57)
  • C#利用自定義特性以及反射,來提大型項目的開發(fā)的效率

    C#利用自定義特性以及反射,來提大型項目的開發(fā)的效率

    ? 在大型項目的開發(fā)過程中,需要多人協(xié)同工作,來加速項目完成進(jìn)度。 比如一個軟件有100個form,分給100個人來寫,每個人完成自己的Form.cs的編寫之后,要在Mainform調(diào)用自己寫的Form。 如果按照正常的Form form1 = new Form()這種寫法來構(gòu)造窗口的話,相當(dāng)于每個人都要改動Mainfo

    2024年02月14日
    瀏覽(30)
  • .NET Core反射獲取帶有自定義特性的類,通過依賴注入根據(jù)Attribute元數(shù)據(jù)信息調(diào)用對應(yīng)的方法

    .NET Core反射獲取帶有自定義特性的類,通過依賴注入根據(jù)Attribute元數(shù)據(jù)信息調(diào)用對應(yīng)的方法

    前段時間有朋友問道一個這樣的問題,.NET Core中如何通過Attribute的元數(shù)據(jù)信息來調(diào)用標(biāo)記的對應(yīng)方法。我第一時間想到的就是通過C#反射獲取帶有Custom Attribute標(biāo)記的類,然后通過依賴注入(DI)的方式獲取對應(yīng)服務(wù)的方法并通過反射動態(tài)執(zhí)行類的方法,從而實現(xiàn)更靈活的編程

    2023年04月15日
    瀏覽(31)
  • 【Unity】 基礎(chǔ)交互入門(C#腳本互相調(diào)用的方法,含動態(tài)綁定腳本)

    腳本A: 在需要被調(diào)用的類里這樣寫: 腳本B: 在其他類里調(diào)用: 如果出現(xiàn)無法識別上下文的提示,檢查一下以下問題: 1、兩個腳本的命名空間是否一致,如果不需要的命名空間可以直接刪除。 2、類名是否大寫開頭,且命名合法,且和文件名一致。 3、更新編譯一下保存一

    2024年02月15日
    瀏覽(24)
  • 【C#】反射機(jī)制,動態(tài)加載類文件

    【C#】反射機(jī)制,動態(tài)加載類文件

    【C#】編號生成器(定義單號規(guī)則、固定字符、流水號、業(yè)務(wù)單號) 本文鏈接:https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范圍生成器(開始日期、結(jié)束日期) 本文鏈接:https://blog.csdn.net/youcheng_ge/article/details/129040663 【C#】組件化開發(fā),調(diào)用dll組件方法 本文鏈接

    2024年02月11日
    瀏覽(16)
  • C# Assembly 反射動態(tài)加載程序集(動態(tài)加載Dll)Demo

    C# Assembly 反射動態(tài)加載程序集(動態(tài)加載Dll)Demo

    No1、本Demo 定義了一個接口IserviceToolFrame,接口中有一個方法Run。 No2、在另外兩個工程中,分別定義兩個類serviceToolCatComplete、serviceToolDogComplete實現(xiàn)接口IserviceToolFrame。 No3、控制臺程序通過動態(tài)加載Dll的方式去調(diào)用IserviceToolFrame的實例,輸出不同的內(nèi)容。代碼如下: 動態(tài)加載

    2024年02月15日
    瀏覽(19)
  • 微信小程序通過js動態(tài)修改css樣式的方法,以及css變量

    不知道各位小帥有沒有遇到這種問題,在微信小程序開發(fā)的時候,我們想要將某個文字大小變大,那么本篇文章就是解決這個問題。

    2024年02月06日
    瀏覽(27)
  • 【C#】實體類和DataTable之間相互轉(zhuǎn)換,實體反射動態(tài)遍歷列

    【C#】實體類和DataTable之間相互轉(zhuǎn)換,實體反射動態(tài)遍歷列

    在實際項目中,經(jīng)常會用到數(shù)據(jù)之間的相互轉(zhuǎn)換,序列化和反序列化就是常見場景。這里我們只簡單聊聊實體類和DataTable之間的相互轉(zhuǎn)換,可以用于不同業(yè)務(wù)場景使用。 要將C# DataTable 轉(zhuǎn)換為 Model 實體類,你可以使用反射來獲取 DataTable 的列和值,并通過實例化 Model 類來賦值

    2024年02月15日
    瀏覽(26)
  • C#反射實現(xiàn)插件式開發(fā)

    C#反射實現(xiàn)插件式開發(fā)

    插件式架構(gòu),一種全新的、開放性的、高擴(kuò)展性的架構(gòu)體系。插件式架構(gòu)設(shè)計好處很多,把擴(kuò)展功能從框架中剝離出來,降低了框架的復(fù)雜度,讓框架更容易實現(xiàn)。擴(kuò)展功能與框架以一種很松的方式耦合,兩者在保持接口不變的情況下,可以獨立變化和發(fā)布?;诓寮O(shè)計并不

    2024年02月08日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包