日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反射的妙用-类名方法名做参数进行方法调用实例demo

發布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射的妙用-类名方法名做参数进行方法调用实例demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先聲明一點,大家都會說反射的效率低下,但是大多數的框架能少了反射嗎?當反射能為我們帶來代碼上的方便就可以用,如有不當之處還望大家指出

1,項目結構圖如下所示:一個ClassLb類庫項目,一個為測試用的testReflect的webform項目,testReflect添加對ClassLb類庫項目的引用

2,ClassLb類庫項目中我添加了兩個非常簡單的類,代碼如下

public class Class1{public static string Insert(string a, string b){return a + "," + b + "插入成功在Class1中";}public static string Update(string a, string b){return a + "," + b + "更新成功在Class1中";}}public class Class2{public static string Insert(string a, string b){return "a,b插入成功在Class2中";}public static string Update(string a, string b){return "a,b更新成功在Class2中";}}

3,webform項目在Default.aspx.cs中的測試代碼如下:注意,添加命名空間using System.Reflection;

/// <summary>/// 獲取類型/// </summary>/// <param name="assemblyName">程序集名</param>/// <param name="typeName">類名</param>/// <returns></returns>private Type AccessType(string assemblyName, string typeName){Type type = null;Assembly assembly = Assembly.Load(assemblyName);if (assembly == null)throw new Exception("Could not find assembly!");type = assembly.GetType(assemblyName + "." + typeName);if (type == null)throw new Exception("Could not find type!");return type;} /// <summary>/// 執行方法獲取結果/// </summary>/// <param name="assemblyName">程序集名</param>/// <param name="typeName">類名</param>/// <param name="method">方法名</param>/// <param name="arguments">方法所需參數</param>/// <returns></returns>public object ExecuteMethod(string assemblyName, string typeName, string method, params object[] arguments){object returnObject = null;Type type = AccessType(assemblyName, typeName);returnObject = type.InvokeMember(method, BindingFlags.Default | BindingFlags.InvokeMethod, null, null, arguments);return returnObject;}

4,測試代碼如下:

protected void Page_Load(object sender, EventArgs e){string a = ExecuteMethod("ClassLb", "Class1", "Insert", "sxd", "123").ToString();Response.Write(a + "</br>");string b = ExecuteMethod("ClassLb", "Class1", "Update", "sxd", "123").ToString();Response.Write(b + "</br>");string c = ExecuteMethod("ClassLb", "Class2", "Insert", "sxd", "123").ToString();Response.Write(c + "</br>");string d = ExecuteMethod("ClassLb", "Class2", "Update", "sxd", "123").ToString();Response.Write(d + "</br>");}

5,執行結果:

6,心得體會,我做的上一個項目用到的是Jquery通過ajax調用webservice,webservice調用類庫方法,每一個對象基本都有增刪改查操作,我在webservice中就要建四個操作的方法供ajax調用,寫了很多的webservice,每個webservice又有好幾個方法,浪費了很多的時間,當我用上面所示的反射的時候只需用一個webservice,一個方法,前臺ajax調用的時候給我傳入相應的參數即可,這樣會大大提高開發速度,這只是我的一點體會,如果大家有更好的方法請一起跟大家分享

?

轉載于:https://www.cnblogs.com/shixudong/p/3667597.html

總結

以上是生活随笔為你收集整理的反射的妙用-类名方法名做参数进行方法调用实例demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。