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、結果如下:
源碼下載:下載