第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 = ;
- y = ;
- 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 = ;
- 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));
- }
- }
- }
第15章 .NET中的反射的更多相关文章
- .Net 中的反射(序章) - Part.1
引言 反射是.Net提供给我们的一件强力武器,尽管大多数情况下我们不常用到反射,尽管我们可能也不需要精通它,但对反射的使用作以初步了解在日后的开发中或许会有所帮助. 反射是一个庞大的话题,牵扯到的知识 ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
- 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化
第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...
- [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦
[.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦 本节导读:上篇文章简单介绍了.NET面向对象中一个重要的技术反射的基本应用,它可以让我们动态的调 ...
- ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换
15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点).任务切换和14章的某些概念是分不开的. ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候 ...
- java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...
- 第15章 设备无关位图_15.3 DIB和DDB的结合
第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说 ...
- unix network programming(3rd)Vol.1 [第13~15章]《读书笔记系列》
第13章 守护进程和inetd 超级服务器 syslog() daemon_init() setuid() setgid() 第14章 高级IO 标准I/O函数库,支持3种缓冲 缓冲(读写存储设备(硬 ...
- perl5 第十二章 Perl5中的引用/指针
第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用 子程序模板七.数组与子程序八.文件句 ...
随机推荐
- asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
web.config <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应 ...
- java写入excel文件poi
java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils; import java.io.File; import ja ...
- C 程序解决实际文件案例
1,C程序参数(编写带参数 的C--argc,argv[]程序),带参数的Main程序 程序功能说明: 把命令行参数中的前一个文件名标识 的文件,复制到后一个文件名标识的文件中,如只有一个则把该文件写 ...
- 三剑客之SED
Sed功能说明 Sed是Strem Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. [root@old ~]# sed --versio ...
- 16.C语言中数据类型的本质含义是:表示一个内存格子的长度和解析方法。
数据类型决定长度的含义:我们一个内存地址(0x30000000),本来这个地址只代表1个字节的长度,但是实际上我们可以通过给他一个类型(int),让他有了长度(4),这样这个代表内存地址的数字(0x3 ...
- VIM编辑器之常用命令
分类: vim 目录(?)[-] 第一级 存活 第二级 感觉良好 第三级 更好更强更快 更好 更强 更快 第四级 Vim 超能力 在当前行上移动光标 0 f F t T 区域选择 acti ...
- MySQL的高可用设计方案的记录
一.看下常用的MySQL的高可用方案: 对上图的说明: 1)HeartBeat通过串口线或者以太网网线直连网卡对对端的服务做健康检查,并负责执行Drbd,MySQL,vip等资源的自动切换. 2)da ...
- 动态组合lambda 表达式
//记录实体集合—动态组合lambda 表达式 Expression<Func<AdEntity, bool>> thirdWhere = p => p.Observer ...
- elasticsearch同义词及动态更新
第一种:参考地址:http://dev.paperlesspost.com/setting-up-elasticsearch-synonyms/271.Add a synonyms file.2.Cr ...
- eclipse debug maven项目时出现缺少库的问题
调试maven web项目时出现缺少库的情况导致项目无法启动 可是打包到tomcat发布却一切正常 后来在stackoverlow上找到了解决方案 项目右键属性->Deployment Ass ...