猿问
下载APP

c#反射调用函数?

简单的说一个类A里有若干的私有函数,ADD、KEEP等等很多个,以后可能还会添加,这些函数都没有参数也没有返回值。
如何在A里加一个公有函数DO(string sName),实现根据sName函数名调用这些函数。

HUH函数
浏览 127回答 3
3回答

蝴蝶不菲

完整的代码:using System.Reflection;namespace ReflectionDllDemo{class Program{static void Main(string[] args){var asm = Assembly.LoadFile(@"d:\3_code\DotNet\DllDemo\DllDemo\bin\Debug\DllDemo.dll");var type = asm.GetType("DllDemo.ClassGreenerycn");var instance = asm.CreateInstance("DllDemo.ClassGreenerycn");type.GetProperty("Name").SetValue(instance, "http://greenerycn.cnblogs.com", null);type.GetProperty("IsTest").SetValue(instance, true, null);var method = type.GetMethod("Hello");method.Invoke(instance, null);}}}

一只名叫tom的猫

方法可以写成这样:public void Do(string sName){MethodInfo dynMethod = this.GetType().GetMethod(sName, BindingFlags.NonPublic | BindingFlags.Instance);dynMethod.Invoke(this, null);}

倚天杖

代码如下:public void Do(string sName,object[] methodParams){MethodInfo dynMethod = this.GetType().GetMethod(sName, BindingFlags.NonPublic | BindingFlags.Instance);dynMethod.Invoke(this, methodParams);}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答