C#通过反射获取类中的方法和参数个数,反射调用方法带参数
using System;
using System.Reflection; namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
//反射获取 命名空间+类名
string className = "ConsoleApp2.ClassSample";
string methodName = "test1";
//传递参数
Object[] paras = new Object[] { "我的", "电脑" };
var t = Type.GetType(className);
object obj = Activator.CreateInstance(t); try
{
#region 方法一
//直接调用
MethodInfo method = t.GetMethod("test2");
method.Invoke(obj, paras);
#endregion #region 方法二
MethodInfo[] info = t.GetMethods();
for (int i = ; i < info.Length; i++)
{
var md = info[i];
//方法名
string mothodName = md.Name;
//参数集合
ParameterInfo[] paramInfos = md.GetParameters();
//方法名相同且参数个数一样
if (mothodName == methodName && paramInfos.Length == paras.Length)
{
md.Invoke(obj, paras);
}
}
#endregion
}
catch (Exception ex)
{
throw ex;
}
Console.ReadKey();
}
} class ClassSample
{
public void test1(string para1)
{
Console.WriteLine("方式1 {0}________test111", para1);
} public void test1(string para1, string para2)
{
Console.WriteLine("方式2 {0}________test111________{1}", para1, para2);
} public void test2(string para1, string para2)
{
Console.WriteLine("方式3 {0}________test222________{1}", para1, para2);
}
}
}
C#通过反射获取类中的方法和参数个数,反射调用方法带参数的更多相关文章
- PHP反射获取类中的所有常量
<?php// Yii 2// namespace yournamespace;// use Yii; /** * 缓存辅助类 */ class CacheHelper { /** * 缓存键 ...
- 使用反射获取类中的属性(可用于动态返回PO类的列,当做表格的表头)
//利用反射取类中的属性字段 try { Class clazz = Class.forName("houji.bean.model.TaskModel"); Field[] fi ...
- 反射获取类中的属性和set属性
package framework.base; import java.beans.IntrospectionException; import java.beans.PropertyDescript ...
- php反射获取类和方法中的注释
通过php中的反射机制,获取该类的文档注释,再通过获取其所有的方法,获取方法的注释 所用到的主要类及其方法 ReflectionClass ReflectionClass::getDocComment ...
- Java反射机制demo(三)—获取类中的构造函数
Java反射机制demo(三)—获取类中的构造函数 1,获取类中所有的构造函数 如下面的代码中所示,这个类中显式的构造函数有五个. 空构造: public UserInfo() 带参构造有四个: pu ...
- .NET C#利用反射获取类文件以及其中的方法&属性 并获取类及方法上的特性
了解C#特性类并声明我们自己的特性类[AttributeTest]代码如下 using System; namespace AttributeTest { /* 特性说明 特性本质是一个继承和使用了系 ...
- Java反射学习-1 - 反射获取类的属性,方法,构造器
新建一个Person类 package cn.tx.reflect; /** * 注解初步了解 * @author Administrator * */ public class Person { p ...
- java 通过反射获取类属性结构,类方法,类父类及其泛型,类,接口和包
首先自定义三个类 package reflection1; public interface MtInterface { void info(); } package reflection1; imp ...
- c#通过反射获取类上的自定义特性
c#通过反射获取类上的自定义特性 本文转载:http://www.cnblogs.com/jeffwongishandsome/archive/2009/11/18/1602825.html 下面这个 ...
随机推荐
- 动态include是通过servlet进行页面信息交互的
动态include是通过servlet进行页面信息交互的
- openstack之keystone部署
前言 openstack更新频率是挺快的,每六个月更新一次(命名是是以A-Z的方式,Austin,Bexar...Newton).博主建议大家先可一种版本研究,等某一版本研究透彻了,在去研究新的版本. ...
- CSS-posiziton
1. 想要实现,”返回顶部”永远位于页面的右下角.需要用到position函数.CSS:层叠样式表.用到了分层的功能. position:fixed; 永远固定在一个地方. <!DOCTYPE ...
- BZOJ2668:[CQOI2012]交换棋子——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2668 https://www.luogu.org/problemnew/show/P3159#sub ...
- HDU.1285 确定比赛名次 (拓扑排序 TopSort)
HDU.1285 确定比赛名次 (拓扑排序 TopSort) 题意分析 裸的拓扑排序 详解请移步 算法学习 拓扑排序(TopSort) 只不过这道的额外要求是,输出字典序最小的那组解.那么解决方案就是 ...
- Codeforces Round #345 (Div. 2) A
A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- Android核心类源码分析
Handler流程1.首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象:因为Looper.prepare()在一个线程中只能调用 ...
- 第一章 深入web请求过程
B/S架构的的好处: 客户端使用统一的浏览器(browser).由于浏览器的统一性,它不需要特殊的配置和网络连接,有效的屏蔽了不同服务提供商提供给用户使用服务的差异性.另外一点是浏览器的交互特性使得用 ...
- spring中使用@Async注解进行异步处理
引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3. ...
- Codeforces 617E XOR and Favorite Number莫队
http://codeforces.com/contest/617/problem/E 题意:给出q个查询,每次询问区间内连续异或值为k的有几种情况. 思路:没有区间修改,而且扩展端点,减小端点在前缀 ...