VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > c#教程 >
  • C#教程之C#教程之C#通过字符串名称来调用对应字符串名称

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

前段时间在一个项目中,在一个地方要将函数所在类中的方法都调用一遍,但是否调用要通过配置文件中的内容决定。所以为了减少代码量,在网上查了相关信息,终于成功的将其应用到了项目中,我在这里将我做的一个简单例子提供给大家,便于大家方便下载和理解。

主要用到了反射的一个特性,主要代码如下:

复制代码
object[] _params = new object[kvp.Value.Length]; 
for (int i = 0; i <= _params.Length - 1; i++)
{
_params[i] = kvp.Value[i]; 
}

Type t = typeof(ListOfWay); 
MethodInfo mi = t.GetMethod(kvp.Key.ToString()); 
object objinstance = Activator.CreateInstance(t); 
int result = (int)mi.Invoke(objinstance, _params);
复制代码

基本步骤就是:

1、将要调用的方法的参数全部依次放入一个object数组中;

2、用反射一个特性,获得方法所在类的类型;

3、根据对象和方法参数去调用这个方法。

 详细代码:

 View Code

用于测试的方法所在的类的代码:

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestWay
{
    public class ListOfWay
    {
        public int Add(string a, string b)
        {
            return Convert.ToInt32(a) + Convert.ToInt32(b);
        }
        public int Sub(string a, string b)
        {
            return Convert.ToInt32(a) - Convert.ToInt32(b);
        }
        public int Mul(string a, string b)
        {
            return Convert.ToInt32(a) * Convert.ToInt32(b);
        }
        public int Div(string a, string b)
        {
            return Convert.ToInt32(a) / Convert.ToInt32(b);
        }

    }
}
复制代码

相关教程