zoukankan      html  css  js  c++  java
  • 第15章 .NET中的反射

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //TestClass.ShowMsg();
                //TestClass.ShowMsg(new Message());
    
                //Assembly asm = Assembly.GetExecutingAssembly();
                //Object obj=asm.CreateInstance("ConsoleApplication2.Calculator",true);
                //Calculator cal=(Calculator)obj;
    
                //Object[] parameters = new Object[2] { 3, 5 };
                //Object obj1 = asm.CreateInstance("ConsoleApplication2.Calculator", true, BindingFlags.Default, null, parameters, null, null);
                //Calculator cal = (Calculator)obj1;
    
                //Type t = typeof(Calculator);
                //Calculator cal = new Calculator(3, 5);
                //int result = (int)t.InvokeMember("Add", BindingFlags.InvokeMethod, null, cal, null);
                //Console.WriteLine("result:" + result);
    
                //Type t = typeof(Calculator);
                //Object[] parameters = new Object[2] { 3, 5 };
                //t.InvokeMember("Add", BindingFlags.InvokeMethod, null, t, parameters);
    
                //Type t = typeof(Calculator);
                //Calculator cal = new Calculator(3, 5);
                //MethodInfo mi = t.GetMethod("Add", BindingFlags.Public | BindingFlags.Instance);
                //mi.Invoke(cal, null);
    
                //Type t = typeof(Calculator);
                //Object[] parameters = new Object[2] { 6, 9 };
                //MethodInfo mi = t.GetMethod("Add", BindingFlags.Public | BindingFlags.Static);
                //mi.Invoke(null, parameters);
    
                Console.ReadKey();
            }
        }
    
        public class Message { }
    
        public class TestClass
        {
            [Obsolete("请使用新方法")]
            public static void ShowMsg()
            {
                Console.WriteLine("旧MSG");
            }
    
            public static void ShowMsg(Message msg)
            {
                Console.WriteLine("新MSG");
            }
        }
    
        public class Calculator
        {
            private int x;
            private int y;
            public Calculator()
            {
                x = 0;
                y = 0;
                Console.WriteLine("Calculate()");
            }
    
            public Calculator(int x, int y)
            {
                this.x = x;
                this.y = y;
                Console.WriteLine("Calculate(int x, int y)");
            }
    
            public int Add()
            {
                int total = 0;
                total = x + y;
                Console.WriteLine("invoke instance method");
                Console.WriteLine(string.Format("{0}+{1}={2}", x, y, total));
                return total;
            }
    
            public static void Add(int x, int y)
            {
                int total = x + y;
                Console.WriteLine("invoke static method");
                Console.WriteLine(string.Format("{0}+{1}={2}", x, y, total));
            }
        }
    }
    View Code
  • 相关阅读:
    移植Fatfs文件系统到工程中
    利用官方的ucosiii包中测试板的工程移植到属于自己的开发板(stmf103ZE)上
    华为Liteos移植到stm32F03ZE
    如何使用postman模拟https的post和get请求
    ubuntu 16 搭建只能上传不可下载删除ftp服务
    使用STM32F103ZET霸道主板实现LCD显示屏显示
    资源任务调度算法实现(大数据云计算作业来的)
    STM32F10xx(高容量)WiFi模块的初始化和使用
    使用STM32F103ZET霸道主板实现SD卡的读写(非文件系统)
    单片机期末实训---- 密码锁和交通灯
  • 原文地址:https://www.cnblogs.com/liuslayer/p/5944525.html
Copyright © 2011-2022 走看看