c#反射调用函数

简单的说一个类A里有若干的私有函数,ADD、KEEP等等很多个,以后可能还会添加,这些函数都没有参数也没有返回值。如何在A里加一个公有函数DO(stringsName),... 简单的说一个类A里有若干的私有函数,ADD、KEEP等等很多个,以后可能还会添加,这些函数都没有参数也没有返回值。
如何在A里加一个公有函数DO(string sName),实现根据sName函数名调用这些函数。
展开
 我来答
匿名用户
推荐于2017-09-06
展开全部
方法可以写成这样:
public void Do(string sName)
{
MethodInfo dynMethod = this.GetType().GetMethod(sName, BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, null);
}
追问
如果函数有的有参数,有的没参数要如何呢?
追答
有就加到methodParams里,没有就null
public void Do(string sName,object[] methodParams)
{
MethodInfo dynMethod = this.GetType().GetMethod(sName, BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, methodParams);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2017-09-03 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2971万
展开全部
完整的代码:
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);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
discovery522
2015-06-11 · TA获得超过4714个赞
知道大有可为答主
回答量:2308
采纳率:71%
帮助的人:1521万
展开全部
代码如下:

public void Do(string sName,object[] methodParams)
{
MethodInfo dynMethod = this.GetType().GetMethod(sName, BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, methodParams);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式