随笔 - 108,  文章 - 0,  评论 - 2,  阅读 - 57691
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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();
 }
 }
}

 

posted on   梁娜  阅读(700)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示