国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

反射的妙用-類名方法名做參數(shù)進(jìn)行方法調(diào)用實(shí)例demo

2019-11-17 01:29:23
字體:
供稿:網(wǎng)友

反射的妙用-類名方法名做參數(shù)進(jìn)行方法調(diào)用實(shí)例demo

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

1,項(xiàng)目結(jié)構(gòu)圖如下所示:一個ClassLb類庫項(xiàng)目,一個為測試用的testReflect的webform項(xiàng)目,testReflect添加對ClassLb類庫項(xiàng)目的引用

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

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項(xiàng)目在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>        /// 執(zhí)行方法獲取結(jié)果        /// </summary>        /// <param name="assemblyName">程序集名</param>        /// <param name="typeName">類名</param>        /// <param name="method">方法名</param>        /// <param name="arguments">方法所需參數(shù)</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,執(zhí)行結(jié)果:

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 改则县| 姜堰市| 东乌珠穆沁旗| 卓尼县| 万全县| 土默特右旗| 鹿邑县| 吕梁市| 许昌市| 通渭县| 类乌齐县| SHOW| 寻甸| 正安县| 泗洪县| 滦南县| 奎屯市| 乳山市| 新闻| 宾阳县| 葫芦岛市| 泽州县| 连南| 湖口县| 于田县| 蛟河市| 大洼县| 商河县| 枣庄市| 洮南市| 化隆| 宕昌县| 浦城县| 石景山区| 吉木萨尔县| 安康市| 扶余县| 探索| 桃园县| 甘孜县| 长乐市|