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(); } } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)