C#通过函数名字符串执⾏相应的函数
如果代码中函数过多,那么通过函数名字符串执⾏相应的函数会更加⽅便,也会使代码更为简单。
在C#中,通过函数名字符串执⾏相应的函数这项功能是在System. Reflection命名空间中实现的,使⽤的函数为GetMethod。若要使⽤此功能只需如下三步。
⼀.GetMethod函数定义在虚基类Type类中,在使⽤函数前应先获取⼀个Type对象,代码为:
Type t=typeof(Program); //括号中的为所要使⽤的函数所在的类的类名。
⼆.通过对象t便可以使⽤GetMethod函数了,代码如下:
MethodInfo mt = t.GetMethod("aabbcc",BindingFlags.Static);
注:
GetMethod函数有6个重载函数,其中常⽤的有2个。
public MethodInfo GetMethod(string name)
public MethodInfo GetMethod(string name,BindingFlags bindingAttr)
name为所要使⽤的函数名    bindingAttr为搜索范围
第⼀个函数对 name的搜索区分⼤⼩写。搜索范围包括公共静态⽅法和公共实例⽅法。若搜索的函数不在此范围内,则应使⽤第⼆个函数。
writeline函数若成功搜索到函数,则返回⾮null值,否则返回⾮空值,在向下执⾏前应检查⼀下返回值,否则会报错。
三.获取到⾮空的MethodInfo类的实例mt后便可执⾏所要的函数了。
string str = (string)mt.Invoke(null,newobject[] { "1234567890123"    });
注:
Invoke函数的原型如下:
public Object Invoke(Object obj,Object[]parameters)
第⼀个参数为对其调⽤⽅法或构造函数的对象。如果⽅法是静态的,则应为null,否则必需给出⼀个实例,若在同⼀类中调⽤,则可指定为this。
第⼆个参数为调⽤的⽅法的参数列表。这是⼀个对象数组,这些对象与要调⽤的⽅法或构造函数的参数具有相同的数量、顺序和类型。如果没有任何参数,则 parameters应为nullNothingnullptr null引⽤。
函数的返回值便为所调⽤的函数的返回值,若⽆返回值,则为null。在获取返回值前应进⾏强制类型转换。
四.⽰例如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace Practice
{
class Program
{
static void Main(string[]    args)
{
Type    t = typeof(Program);//括号中的为所要使⽤的函数所在的类的类名。
MethodInfo    mt = t.GetMethod("aabbcc",BindingFlags.Static);
if    (mt == null)
{
Console.WriteLine("没有获取到相应的函数!!");
}
else
else
{
string    str = (string)mt.Invoke(null,newobject[] { "1234567890123"    });
Console.WriteLine(str);
}
Console.ReadKey();
}
private static string    aabbcc(string abc)
{
return    abc;
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。