1、新建一个Node类
public class Node { public int Id { get; set; } public string Name { get; set; } }
2、添加两个方法,一个用于计算Node的数量,一个用于获得Node的名称
/// <summary> /// 计算结点的数量 /// </summary> /// <param name="lstNodes"></param> /// <returns></returns> public string CalcNodeCount(List<Node> lstNodes) { return "数量为:" + lstNodes.Count.ToString(); } /// <summary> /// 获得节点的名称集合 /// </summary> /// <param name="lstNodes"></param> /// <returns></returns> public string GetNodeNames(List<Node> lstNodes) { return "名称列表:" + string.Join(",", lstNodes.Select(c => c.Name).ToArray()); }
3、进行调用
static void Main(string[] args) { string strNameSpace = "ReflectionDemo.Program"; //定义一个方法名称的数组,用于循环执行 List<string> lstMethods = new List<string> { "CalcNodeCount", "GetNodeNames" }; //定义一个需要处理的数据源 List<Node> lstNodes = new List<Node> { new Node { Id = 1, Name = "中国" }, new Node { Id = 2, Name = "美国" }, new Node { Id = 3, Name = "德国" } }; Type type = Type.GetType(strNameSpace);//定义一个类型 object instanceObj = System.Activator.CreateInstance(type); ;//定义一个变量用来存放实例化好的类型 foreach (string methodName in lstMethods)//循环然后通过反射调用需要执行的方法,并打印出来执行结果 { MethodInfo instanceMethod = type.GetMethod(methodName, new Type[] { typeof(List<Node>) });//定义方法和定义方法的参数 List<object> lstArgs = new List<object>(); lstArgs.Add(lstNodes); object[] arrayArgs = lstArgs.ToArray();//定义参数 string strResult = (string)instanceMethod.Invoke(instanceObj, arrayArgs);//调用方法 Console.WriteLine(strResult); } Console.ReadLine(); }
4、结果如下:
源码下载:下载