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中的反射的更多相关文章

  1. .Net 中的反射(序章) - Part.1

    引言 反射是.Net提供给我们的一件强力武器,尽管大多数情况下我们不常用到反射,尽管我们可能也不需要精通它,但对反射的使用作以初步了解在日后的开发中或许会有所帮助. 反射是一个庞大的话题,牵扯到的知识 ...

  2. 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 ...

  3. 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化

    第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...

  4. [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦

    [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦 本节导读:上篇文章简单介绍了.NET面向对象中一个重要的技术反射的基本应用,它可以让我们动态的调 ...

  5. ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换

    15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点).任务切换和14章的某些概念是分不开的. ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候 ...

  6. java中的反射机制在Android开发中的用处

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...

  7. 第15章 设备无关位图_15.3 DIB和DDB的结合

    第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说 ...

  8. unix network programming(3rd)Vol.1 [第13~15章]《读书笔记系列》

    第13章 守护进程和inetd 超级服务器 syslog() daemon_init() setuid() setgid() 第14章 高级IO 标准I/O函数库,支持3种缓冲 缓冲(读写存储设备(硬 ...

  9. perl5 第十二章 Perl5中的引用/指针

    第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句 ...

随机推荐

  1. OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)

    开源与成熟商业的瓦片地图服务(TMS  2  WMTS),都有如下共同的特性,基本成为了标准: (1) 坐标系:WGS84 (2) 投影:墨卡托投影(Marcator,正轴等角圆柱投影) ------ ...

  2. spring+ibatis整合

    一.pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...

  3. XXX esx.problem.syslog.nonpersistent.formatOnHost not found XXX

    ESXi 主机的摘要选项卡报告以下错误:配置问题:XXX esx.problem.syslog.nonpersistent.formatOnHost 未找到 XXX (2101811)   Sympt ...

  4. iPhone与iPad在开发上的区别

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. EF4.1DbContext使用现成的数据库

    在配置文件中使用 <configuration> <connectionStrings> <add name="BlogDB" providerNam ...

  6. (Hibernate进阶)Hibernate基本映射(三)

    介绍Hibernate的经典内容:对象关系映射.主要介绍映射的基本概念,映射的分类,映射文件. 概念 ORM(Object Relational Mapping),即对象关系映射.它的作用就是在关系型 ...

  7. html5设计原理(转)

    转自:   http://www.cn-cuckoo.com/2010/10/21/the-design-of-html5-2151.html 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一 ...

  8. leetcode174. Dungeon Game

    // learn from https://discuss.leetcode.com/topic/6912/c-dp-solution ''' class Solution { public: int ...

  9. Ninject之旅之七:Ninject依赖注入

    摘要 可以使用不同的模式向消费者类注入依赖项,向构造器里注入依赖项是其中一种.有一些遵循的模式用来注册依赖项,同时有一些需要避免的模式,因为他们经常导致不合乎需要的结果.这篇文章讲述那些跟Ninjec ...

  10. delphi中break,continue, exit,abort, halt, runerror的异同

    delphi中表示跳出的有break,continue, exit,abort, halt, runerror. 1.break 强制退出循环(只能放在循环中),用于从For语句,while语句或re ...