c#输入方法名来调用方法(反射)
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace zhiXing { class Program { static void Main(string[] args) { //方法1 /* Type t = typeof(TestA); MethodInfo mt = t.GetMethod("My"); TestA ta = new TestA(); string str = (string)mt.Invoke(ta, new object[] { 5 }); */ //方法2 //加载程序集 Assembly s = Assembly.Load("zhiXing"); //得到类 Type tpe = s.GetType("zhiXing.TestA"); //得到方法 MethodInfo method = tpe.GetMethod("My"); //安全判断 { //获取需要传入的参数 ParameterInfo[] parms = method.GetParameters(); //这里是判断参数类型 foreach (ParameterInfo ss in parms) { if (ss.ParameterType == typeof(int)) { Console.WriteLine("参数类型匹配"); } else { Console.WriteLine("参数类型不匹配"); } } } //获取 类的对象 object obj = s.CreateInstance("zhiXing.TestA"); //调用 method.Invoke(obj, new object[] { 5 }); } } public class TestA { public void My(int a) { Console.WriteLine("哈哈哈哈哈" + a); Console.ReadKey(); } } }
=================================================================================================
方法1其实已经实现了,在一个自己的类中,输入自己的方法名来执行函数
实例
public class Execute : MonoBehaviour { // Use this for initialization void Start () { Type t = typeof(Execute);
//获取共有方法 MethodInfo mt = t.GetMethod("My");
//获取私有方法, BindingFlags类型枚举,BindingFlags.NonPublic | BindingFlags.Instance 组合才能获取到private私有方法,
//MethodInfo mt = t.GetMethod("My", BindingFlags.NonPublic | BindingFlags.Instance);
//若公有和私有都要的话 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public
string str = (string)mt.Invoke(this, new object[] { 5 }); } // Update is called once per frame void Update () { } public void My(int a) { Debug.Log("哈哈哈"); } }
【反射的官方中文文档】
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/reflection
有个最简单的办法: Invoke("mothodName", 0)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~