using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace MethodInfoInvokeDemo
{
public class ReflectTest
{
public void MethodWithNoParaNoReturn()
{
Console.WriteLine("不带参数且不返回值的方法");
}
public string MethodWithNoPara()
{
Console.WriteLine("不带参数且有返回值的方法");
return "MethodWithNoPara";
}
public string Method1(string str)
{
Console.WriteLine("带参数且有返回值的方法");
return str;
}
public string Method2(string str, int index)
{
Console.WriteLine("带参数且有返回值的方法");
return str + index.ToString();
}
public string Method3(string str, out string outStr)
{
outStr = "bbbb";
Console.WriteLine("带参数且有返回值的方法");
return str;
}
public static string StaticMethod()
{
Console.WriteLine("静态方法");
return "cccc";
}
}
class Program
{
static void Main(string[] args)
{
Type type = typeof(ReflectTest);
object reflectTest = Activator.CreateInstance(type);
//不带参数且不返回值的方法的调用
MethodInfo methodInfo = type.GetMethod("MethodWithNoParaNoReturn");
methodInfo.Invoke(reflectTest, null);
Console.WriteLine();
//不带参数且有返回值的方法的调用
methodInfo = type.GetMethod("MethodWithNoPara");
Console.WriteLine(methodInfo.Invoke(reflectTest, null).ToString());
Console.WriteLine();
//带参数且有返回值的方法的调用
methodInfo = type.GetMethod("Method1", new Type[]{typeof(string)});
Console.WriteLine(methodInfo.Invoke(reflectTest, new object[]{"测试"}).ToString());
Console.WriteLine();
//带多个参数且有返回值的方法的调用
methodInfo = type.GetMethod("Method2", new Type[] { typeof(string), typeof(int) });
Console.WriteLine(methodInfo.Invoke(reflectTest, new object[] { "测试", 100 }).ToString());
//Console.WriteLine();
//methodInfo = type.GetMethod("Method3", new Type[] { typeof(string), typeof(string) });
//string outStr = "";
//Console.WriteLine(methodInfo.Invoke(reflectTest, new object[] { "测试", outStr }).ToString());
Console.WriteLine();
//静态方法的调用
methodInfo = type.GetMethod("StaticMethod");
Console.WriteLine(methodInfo.Invoke(null, null).ToString());
Console.ReadKey();
}
}
}
分享到:
相关推荐
java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码
解决axis2-CodegenWizardPlugin的BUG,java.lang.reflect.InvocationTargetException 带有相关jar 包及相关文件
scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException 安装这个版本的scrcpy即可。
MyEclipse axis2 wsdl java.lang.reflect.invocationtargetexception code gen 大家要注意一定要仔细,这个问题基本上缺少包引起的,而且一定要clean 如果需要axis2插件 以及这个plugins中的包在我的其他资源里面有
kotlin-reflect.jar
MyEclipse6.0下axis2插件的安装! 解决java.lang.reflect.InvocationTargetException本人亲自测试,完美使用!
NULL 博文链接:https://inter12.iteye.com/blog/1288117
Could not download kotlin-reflect.jar 这个问题 是墙的原因 没有下载下来kotlin-reflect.jar的jar包资源。 把下载的kotlin-reflect-1.3.70.jar,放在版本文件的子目录中,重新启动电脑就可以。网上都有对应的操作...
Reflect.doc Reflect.doc Reflect.doc Reflect.doc Reflect.doc Reflect.doc Reflect.doc
jdk1.8的src,扩展了sun.reflect,unsafe。
scala-reflect.jar
免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者
ES2015最符合规范的Reflect.getPrototypeOf sham / Reflect.getPrototypeOf / Reflect.getPrototypeOf ,可在尽可能多的引擎中使用-特别是具有__proto__支持或ES6的任何引擎。 内置类型也可以在较旧的引擎中正常...
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke...
JBL Reflect Flow用户快速说明书.pdf
Reflect.apply 符合ESnext规范的Reflect.apply填充程序/ Reflect.apply / replacement可以使用到ES3。 该软件包实现了接口。 它可以在ES3支持的环境中工作并符合。入门npm install --save reflect.apply用法/示例...
赠送jar包:scala-reflect-2.12.14.jar; 赠送原API文档:scala-reflect-2.12.14-javadoc.jar; 赠送源代码:scala-reflect-2.12.14-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
1. 非静态成员和非静态方法的访问和调用 1.1 关于构造方法 1.2 关于成员变量 1.3 关于方法调用 2. 静态成员和静态方法的访问和调用 2.1 关于静态成员变量 2.2 关于静态方法 3. 静态内部类、非静态内部类、...
赠送jar包:scala-reflect-2.12.14.jar; 赠送原API文档:scala-reflect-2.12.14-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
赠送jar包:scala-reflect-2.11.8.jar; 赠送原API文档:scala-reflect-2.11.8-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。