第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 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用 子程序模板七.数组与子程序八.文件句 ...
随机推荐
- C#正则表达式Regex类的用法
C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...
- adb 命令集合
1. adb shell 2. adb version 查看 adb 安装版本 3. adb start-server 启动服务 4. adb kill-server 杀死服务 5. adb get- ...
- python 面试必读
总结了10道题的考试侧重点,供参考: 1.How are arguments passed – by reference of by value? 考的是语法,基本功,虽说python程序员可以不用关 ...
- 配置web项目时页面报错java.lang.NoClassDefFoundError: Tag
把tomcat:common\lib 下的servlet-api.jar 和jsp-api.jar cp到项目的web-inf 的lib包里 ,重启项目即可
- Salesforce 动态审批
由于Salesforce只支持根据条件动态选择审批分支,如果我们想进一步支持动态根据页面的某种条件选择审批人,Salesforce是不支持的.因此我们只能通过override salesforce审批 ...
- Linux 文件与目录管理
Linux 文件与目录管理 我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始本教程前我们需要先知道什么是绝对 ...
- C语言指针变量作为函数参数
0x01 指针变量作为函数参数的作用是:将一个变量的地址传送到另一个函数中. 0x02 简单的例子:虽然都能实现功能,但意义不同. 正确的写法: #include <stdio.h> vo ...
- Monkey基础
一.Monkey工具简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...
- Android Activity 四种启动模式
task和back stack(任务和回退栈) 任务启动,task被加入到回退栈的栈顶,返回的时候回退栈的栈顶任务会被弹出,并被销毁,栈中的前一任务恢复运行,当activity销毁是,系统不会保留ac ...
- 43、哈工大NLP自然语言处理,LTP4j的测试+还是测试
1.首先需要构建自然语言处理的LTP的框架 (1)需要下载LTP的源码包即c++程序(https://github.com/HIT-SCIR/ltp)下载完解压缩之后的文件为ltp-master (2 ...