C#基础知识回顾-- 反射(2)
GetMethods()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace Reflection
{
class Program
{
static void Main(string[] args)
{
// Demo1();
InvokeMethDemo();
Console.ReadKey();
} static void InvokeMethDemo()
{
//获得MyClass的类型队形
Type t = typeof(MyClass); MyClass reflectOb = new MyClass(, ); Console.WriteLine("类名:{0}", t.Name); Console.WriteLine("本类所提供的方法有:"); MethodInfo[] mi = t.GetMethods(); int val; foreach (MethodInfo m in mi)
{
Console.WriteLine();
//显示参数
ParameterInfo[] pi = m.GetParameters(); if (m.Name == "Set" && pi[].ParameterType == typeof(int))
{
Console.Write("Set(int,int) ");
object[] args = new object[]; args[] = ;
args[] = ; m.Invoke(reflectOb, args);
}
else if (m.Name == "Set" && pi[].ParameterType == typeof(double))
{
Console.Write("Set(double,double) ");
object[] args = new object[]; args[] = 2.34;
args[] = 13.56; m.Invoke(reflectOb, args);
}
else if (m.Name.CompareTo("Sum") == ) {
Console.Write("Sum() ");
val = (int)m.Invoke(reflectOb, null); Console.WriteLine("Sum is {0}",val);
}
else if(m.Name.CompareTo("IsBetween")==)
{
object[] args = new object[]; args[] = ; if ((bool)m.Invoke(reflectOb, args))
{
Console.WriteLine("{0}在x和y之间",args[]);
}
}
Console.WriteLine();
}
}
}
} class MyClass
{
int x;
int y; public MyClass(int i, int j)
{
x = i;
y = j;
} public int Sum()
{
return x + y;
} public bool IsBetween(int i)
{
if (x < i && i < y)
return true;
else
return false;
} public void Set(int a, int b)
{
x = a;
y = b; Show();
} public void Set(double a, double b)
{
x = (int)a;
y = (int)b; Show();
} public void Show()
{
Console.WriteLine("x:{0},y:{1}", x, y);
}
}
运行结果如下:

C#基础知识回顾-- 反射(2)的更多相关文章
- C#基础知识回顾-- 反射(3)
C#基础知识回顾-- 反射(3) 获取Type对象的构造函数: 前一篇因为篇幅问题因为篇幅太短被移除首页,反射这一块还有一篇“怎样在程序集中使用反射”, 其他没有什么可以写的了,前两篇主要是铺垫, ...
- C#基础知识回顾-- 反射(1)
C#基础知识回顾-- 反射(1) 反射(reflection)是一种允许用户获得类型信息的C#特性.术语“反射”源自于它的工作方式: Type对象映射它所代表的底层对象.对Type对象进行查询可以 ...
- C#基础知识回顾-- 反射(4)
从程序集获得类型 先说点题外话,现在技术真的发展太快了.我这边还很多东西半生不熟 呢,那边又出现了好多有趣的新东西让你眼红不已.学还是不学这还真是 个问题.Node.js .bootstrap,我最近 ...
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- C#基础知识回顾--线程传参
C#基础知识回顾--线程传参 在不传递参数情况下,一般大家都使用ThreadStart代理来连接执行函数,ThreadStart委托接收的函数不能有参数, 也不能有返回值.如果希望传递参数给执行函数, ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- C++ 基础知识回顾总结
一.前言 为啥要写这篇博客?答:之前学习的C和C++相关的知识,早就被自己忘到一边去了.但是,随着音视频的学习的不断深入,和C/C++打交道的次数越来越多,看代码是没问题的,但是真到自己操刀去写一些代 ...
- scrapy实战1,基础知识回顾和虚拟环境准备
视频地址 https://coding.imooc.com/learn/list/92.html 一. 基础知识回顾 1. 正则表达式 1)贪婪匹配,非贪婪匹配 .*? 非贪婪 . ...
随机推荐
- javascript跨域传递消息 / 服务器实时推送总结
参考文档,下面有转载[非常好的两篇文章]: http://www.cnblogs.com/loveis715/p/4592246.html [跨源的各种方法总结] http://kb.cnblogs. ...
- Java面试题5
4.&和&&的区别 答: &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5.Collection 和 Collections的区 ...
- 【jenkins 忘记密码】忘记Jenkins管理员密码的解决办法
一.admin密码未更改情况 1.进入\Jenkins\secrets目录,打开initialAdminPassword文件,复制密码: 2.访问Jenkins页面,输入管理员admin,及刚才的密码 ...
- ReactNative学习笔记(五)踩坑总结
已经发现的bug或者问题 Android不支持shadow属性: Animated.Image的borderRadius不生效: setNativeProps无法修改图片的source: 没有直接设置 ...
- Behavior Tree 用 Lua 实现一个最简行为树
local function Traverse(node, ...) local t = node.type if t == SELECTOR then , #node do if Traverse( ...
- 使用Lucene-Spatial实现集成地理位置的全文检索
Lucene通过Spatial包提供了对基于地理位置的全文检索的支持,最典型的应用场景就是:“搜索中关村附近1公里内的火锅店,并按远近排序”.使用Lucene-Spatial添加对地理位置的支持,和之 ...
- 火狐浏览器安装 Modify Headers 插件
一.火狐浏览器插件安装 这里以火狐浏览器的Modify Headers插件安装为例,展示火狐插件的安装: 1.打开火狐浏览器,右上角选择“附加组件” 2.搜索Modify Headers插件 3.安装 ...
- Python加密与解密
前言 据记载,公元前400年,古希腊人发明了置换密码.1881年世界上的第一个电话 保密专利出现.在第二次世界大战期间,德国军方启用“恩尼格玛”密码机, 密码学在战争中起着非常重要的作用. 随着信息化 ...
- 带你入门 Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- hdu 6058---Kanade's sum(链表)
题目链接 Problem Description Give you an array A[1..n]of length n. Let f(l,r,k) be the k-th largest elem ...