C#反射(二)
长时间没有回顾反射知识了,今天就讲解一下反射的一般第二个用法。
二.对方法,属性等的反射
首先需要写一个测试类,生成.exe或.dll文件。
class Test
{ public Test()//普通构造方法
{ }
public string writeString(string s)//有参方法
{ return "welcome:" + s; }
public static string staticString(string s)//静态方法
{ return "welcome:" + s; }
public string writeStringNO()//无参方法
{ return "welcome:chen" ; }}
找出.exe文件,为了方便寻找,可以暂时复制在桌面上。
常规调用测试类方法,采用创建一个对象并实例化来引用方法,比如:
Test t=new Test();
t.writeString();
反射调用(两个项目之间调用):
再创建一个ConsoleApplication2 控制台程序。
先引用命名空间 using System.Reflection;
ConsoleApplication2:
//使用反射
static void Main(string[] args)
{
Assembly ass;//程序集
Type ty;//相当于类
Object ob;//相当于对象
string path = @"C:\Users\Shuang\Desktop\ConsoleApplication1.exe";//程序集路径
ass = Assembly.LoadFile(path);//加载程序集
ty = ass.GetType("ConsoleApplication1.Test");//获取Test类名;格式:"命名空间.类名"
MethodInfo meth = ty.GetMethod("writeString");//获取方法,格式:"方法名" 有参数
MethodInfo meth1 = ty.GetMethod("writeStringNO");//获取方法,格式:"方法名" 无参数
MethodInfo meth2 = ty.GetMethod("staticString");//获取方法,格式:"方法名" 静态
ob = ass.CreateInstance("ConsoleApplication1.Test");//创建一个对象, 格式:"命名空间.类名"
string[] canshu = { "chen1"};//参数数组
string res = (string)meth.Invoke(ob,canshu);//获取结果;格式:对象,参数(参数为object数组) 有参数
string res1 = (string)meth1.Invoke(ob, null);//获取结果;格式:对象,参数(参数为object数组) 无参数
string res2 = (string)meth2.Invoke(null, canshu);///获取结果;格式:对象,参数(参数为object数组) 静态
Console.Write("有参:"+res+"\n");
Console.Write("无参:" + res1 + "\n");
Console.Write("静态:" + res2);
Console.ReadLine();
}
C#反射(二)的更多相关文章
- java反射(二)--反射应用案例
一.反射实例化对象 经过一系列的分析之后发现虽然可以获取Class类的实例化对象,但是依然觉得这个对象的获取意义不是很大,因此可以通过以下几个案例去理解反射的核心意义--反射实例化对象:获取Class ...
- C#反射(二) 【转】
如果没有看<C#反射(一)>.建议先看<C#反射(一)>再看这一篇.上一篇文章发表,有人评论我所写的东西比较基础.其实我也知道我也只不过是在写最基础的语法而已,之所以写它是因为 ...
- 深入分析Java反射(二)-数组和枚举
前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行 ...
- JAVA中反射机制二
声明:如需转载请说明地址来源:http://www.cnblogs.com/pony1223 反射二 利用反射创建对象 1.利用反射创建对象,首先我们创建一个类,类里面,我们知道构造函数有默认的构造函 ...
- C# 反射之调用方法谈
反射的定义 反射提供了描述程序集.模块和类型的对象(Type 类型). 可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性. 如果代码中使用了特性 ...
- java反射快速入门(一)
本文会从以下几个方面讲起 ① 反射的简单解释 ② java反射的API接口 及 demo ③ 反射的优缺点.应用场景 一.什么是反射? java反射:在程序运行中动态获取类的信息,及动态调用对象的方法 ...
- 反射(4)反射性能问题:直接调用vs反射调用
很多人都说使用反射会有性能问题,那到底会比直接调用慢多少呢,下面就来测试一下. 直接调用vs反射调用 下面就来写个demo来验证下直接调用和反射调用的性能差异,代码如下: namespace Cons ...
- 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...
- Java反射Reflect的使用详解
目录 一. 什么是反射 二. 反射的基础Class 2.1 Class类概述 2.2 Class类对象获取的三种方式 三. 反射-构造函数 3.1 getDeclaredConstructor(Cla ...
随机推荐
- varchar int 查询 到底什么情况下走索引?
一个字符类型的.一个int类型的,查询的时候到底会不会走索引,其实很多工作了几年的开发人员有时也会晕,下面就用具体事例来测试一下. 1. 准备工作 先准备2张表,以备后续测试使用. 表1:创建表te ...
- OpenCV-Python 特征匹配 + 单应性查找对象 | 四十五
目标 在本章节中,我们将把calib3d模块中的特征匹配和findHomography混合在一起,以在复杂图像中找到已知对象. 基础 那么我们在上一环节上做了什么?我们使用了queryImage,找到 ...
- Spring的IOC容器学习笔记
(一)Spring的IOC学习 在applicationContext.xml来配置bean,通过该接口,在主程序中,可以指定初始化的对象,不需要在进行赋值操作,直接在xml里配置好. 接下来分享的是 ...
- 数据库SQL实战(一)
一. 1. 查找最晚入职员工的所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`f ...
- k8s删除namespace一直处于terminating状态
k8s删除namespace一直处于terminating状态 当遇到删除ns是一直处于terminating情况可以用调k8s api进行删除. 1.创建api proxy. [root@node1 ...
- 基于Quartz编写一个可复用的分布式调度任务管理WebUI组件
前提 创业小团队,无论选择任何方案,都优先考虑节省成本.关于分布式定时调度框架,成熟的候选方案有XXL-JOB.Easy Scheduler.Light Task Scheduler和Elastic ...
- 【Python3爬虫】反反爬之破解同程旅游加密参数 antitoken
一.前言简介 在现在各个网站使用的反爬措施中,使用 JavaScript 加密算是很常用的了,通常会使用 JavaScript 加密某个参数,例如 token 或者 sign.在这次的例子中,就采取了 ...
- PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分)
PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分) 7-40 奥运排行榜 (25 分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如 ...
- 自动下载bing当日墙纸,并改变为gnome桌面壁纸
写了一个手动白嫖当时bing的当日壁纸,并将其改变为gnome的壁纸,还是学到蛮多东东的 下一步的问题是加入到开机自启动项,使得开机后可以自动更新,目前已看到几篇博客 当然,也写了一个脚本使得可以恢复 ...
- Zabbix报警机制,Zabbix进阶操作,监控案例
...