最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用反射機制實現(xiàn)延遲綁定

 更新時間:2022年07月31日 16:13:28   作者:Darren Ji  
這篇文章介紹了C#使用反射實現(xiàn)延遲綁定的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

反射允許我們在編譯期或運行時獲取程序集的元數(shù)據(jù),通過反射可以做到:

● 創(chuàng)建類型的實例
● 觸發(fā)方法
● 獲取屬性、字段信息
● 延遲綁定
......

如果在編譯期使用反射,可通過如下2種方式獲取程序集Type類型:

  • 1、Type類的靜態(tài)方法

Type type = Type.GetType("somenamespace.someclass");

  • 2、通過typeof

Type type = typeof(someclass);

如果在運行時使用反射,通過運行時的Assembly實例方法獲取Type類型:

Type type = asm.GetType("somenamespace.someclass");

獲取反射信息

有這樣的一個類:

    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public float Score { get; set; }

        public Student()
        {
            this.Id = -1;
            this.Name = string.Empty;
            this.Score = 0;
        }

        public Student(int id, string name, float score)
        {
            this.Id = id;
            this.Name = name;
            this.Score = score;
        }

        public string DisplayName(string name) 
        {
            return string.Format("學(xué)生姓名:{0}", name);
        }

        public void ShowScore()
        {
            Console.WriteLine("學(xué)生分?jǐn)?shù)是:" + this.Score);
        }
    }

通過如下獲取反射信息:

        static void Main(string[] args)
        {
            Type type = Type.GetType("ConsoleApplication1.Student");
            //Type type = typeof (Student);

            Console.WriteLine(type.FullName);
            Console.WriteLine(type.Namespace);
            Console.WriteLine(type.Name);

            //獲取屬性
            PropertyInfo[] props = type.GetProperties();
            foreach (PropertyInfo prop in props)
            {
                Console.WriteLine(prop.Name);
            }

            //獲取方法
            MethodInfo[] methods = type.GetMethods();
            foreach (MethodInfo method in methods)
            {
                Console.WriteLine(method.ReturnType.Name);
                Console.WriteLine(method.Name);
            }
            Console.ReadKey();
        }

 延遲綁定

在通常情況下,為對象實例賦值是發(fā)生在編譯期,如下:

Student stu = new Student();
stu.Name = "somename";

而"延遲綁定",為對象實例賦值或調(diào)用其方法是發(fā)生在運行時,需要獲取在運行時的程序集、Type類型、方法、屬性等。

            //獲取運行時的程序集
            Assembly asm = Assembly.GetExecutingAssembly();

            //獲取運行時的Type類型
            Type type = asm.GetType("ConsoleApplication1.Student");

            //獲取運行時的對象實例
            object stu = Activator.CreateInstance(type);

            //獲取運行時指定方法
            MethodInfo method = type.GetMethod("DisplayName");
            object[] parameters = new object[1];
            parameters[0] = "Darren";

            //觸發(fā)運行時的方法
            string result = (string)method.Invoke(stu, parameters);
            Console.WriteLine(result);
            Console.ReadKey();

到此這篇關(guān)于C#使用反射機制實現(xiàn)延遲綁定的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#用Parallel.Invoke方法盡可能并行執(zhí)行提供的每個線程

    C#用Parallel.Invoke方法盡可能并行執(zhí)行提供的每個線程

    本文主要介紹了C#用Parallel.Invoke方法盡可能并行執(zhí)行提供的每個線程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Unity3D實現(xiàn)相機跟隨控制

    Unity3D實現(xiàn)相機跟隨控制

    這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)相機跟隨控制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C#:foreach與yield語句的介紹

    C#:foreach與yield語句的介紹

    C#:foreach與yield語句的介紹,需要的朋友可以參考一下
    2013-03-03
  • 在C#中對TCP客戶端的狀態(tài)封裝詳解

    在C#中對TCP客戶端的狀態(tài)封裝詳解

    本篇文章小編為大家介紹,在C#中對TCP客戶端的狀態(tài)封裝詳解,需要的朋友參考下
    2013-04-04
  • 在GridControl控件上綁定圖片的幾種操作方式詳解

    在GridControl控件上綁定圖片的幾種操作方式詳解

    GridControl控件是經(jīng)常用來綁定數(shù)據(jù)的,一般以常規(guī)的字符內(nèi)容為主,有時候也會有圖片的顯示需要,這篇文章主要介紹了在GridControl控件上綁定圖片的幾種操作方式詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 解析C#中的常量及如何在C#編程中定義常量

    解析C#中的常量及如何在C#編程中定義常量

    這篇文章主要介紹了C#中的常量及如何在C#編程中定義常量,是C#入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • C#實現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法

    C#實現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法

    這篇文章主要介紹了C#實現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法,可實現(xiàn)將bmp格式位圖轉(zhuǎn)換成ico格式圖標(biāo)的功能,需要的朋友可以參考下
    2015-06-06
  • 一個C#開發(fā)者重溫C++的心路歷程

    一個C#開發(fā)者重溫C++的心路歷程

    作為一個C#開發(fā)為什么要重新學(xué)習(xí)C++呢?因為在C#在很多業(yè)務(wù)場景需要調(diào)用一些C++編寫的COM組件,如果不了解C++,那么,很容易。。。注定是要被C++同事忽悠的
    2019-05-05
  • C#通過PInvoke調(diào)用c++函數(shù)的備忘錄的實例詳解

    C#通過PInvoke調(diào)用c++函數(shù)的備忘錄的實例詳解

    這篇文章主要介紹了C#通過PInvoke調(diào)用c++函數(shù)的備忘錄的實例以及相關(guān)知識點內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-08-08
  • 詳解Unity日志打印工具功能

    詳解Unity日志打印工具功能

    Unity是一個非?;鸬挠螒蛞?,我們再開發(fā)的時候有的時候要進(jìn)行程序的調(diào)試,下面給大家介紹下Unity日志打印工具功能,感興趣的朋友一起看看吧
    2022-01-01

最新評論

凤阳县| 兰考县| 百色市| 大姚县| 沐川县| 改则县| 平舆县| 扎赉特旗| 长葛市| 岗巴县| 白城市| 昌平区| 淳安县| 和龙市| 北票市| 晋城| 基隆市| 叶城县| 当雄县| 兰州市| 盘锦市| 儋州市| 阜城县| 牟定县| 抚州市| 桃江县| 灌云县| 阳西县| 赣榆县| 万年县| 浏阳市| 营山县| 彭州市| 彭水| 丹东市| 青浦区| 昂仁县| 天津市| 和林格尔县| 温泉县| 伊宁县|