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
  • 相关阅读:
    MySQL数据库安装和基本使用
    Android studio JNI技术实现与本地C++链接
    笔记 java中i++ 和 ++i的区别
    LaTeX中添加usepackage{subfigure}一直报错的解决办法,亲测
    Android Studio 出现“Cannot resolve symbol” 解决办法
    记录一个sql
    linux 文件内容查找、去重、统计
    MVC框架的模板缓存
    Linux 命令学习
    笔记 :PHP中的数据结构库SPL
  • 原文地址:https://www.cnblogs.com/liuslayer/p/5944525.html
Copyright © 2011-2022 走看看