最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#使用反射調(diào)用類型成員示例

 更新時間:2014年01月22日 16:14:01   作者:  
學習C#的時候就知道使用反射可以對我們編程提供極大的便利(動態(tài)的獲取信息、調(diào)用類型成員、創(chuàng)建實例等等),下面示例說明一下使用方法

在實際的工作中直接使用反射的機會比較少,有印象的就是一次自己做的WinForms小工具的時候利用反射來動態(tài)獲取窗體上的每個控件,并且為必要的控件動態(tài)添加注冊事件。因為剛?cè)肼毿鹿?,為了更快的了解公司的業(yè)務(wù)、和開發(fā)習慣,先和現(xiàn)在公司同事一起修改現(xiàn)有系統(tǒng)的一些小Bug。在Tester提交的Bug中有一個是對GridView進行動態(tài)的排序——點擊一個列時使用該列作為條件進行排序(PS:點擊一個列時前臺會將該列的字符串(該字符串是)傳到后臺的方法中)。

使用反射的原因

為什么會選擇使用反射呢?在項目中我們使用NHibernate作為ORM框架,一般情況下在BLL層其實都提供了對應(yīng)的排序方法,但是現(xiàn)在需要修改的這個Bug使用的數(shù)據(jù)不是在一張表里面,而是一個視圖。如果按照以前排序功能實現(xiàn)模式的話,需要在多個地方進行修改;且由于是剛接觸這個項目,對項目的結(jié)構(gòu)還不夠了解,不宜進行大面積的修改。和同事溝通后決定使用反射來實現(xiàn)。理由如下:

因為是直接對已經(jīng)從數(shù)據(jù)庫返回的結(jié)果進行排序,所有只需要在一個地方修改(BLL層)
雖然使用反射會增加性能上的開銷,但是在這個場景數(shù)據(jù)量并不大,性能上的消耗可以忽略不計

使用反射動態(tài)調(diào)用代碼

反射給人感覺好像很復雜,其實使用起來還是比較方便的,由于項目中代碼上下文牽涉過多,不適合貼出來,下面是使用我自己整理的使用反射進行動態(tài)調(diào)用,常用的一些代碼片段:

復制代碼 代碼如下:

classProgram
{
staticvoidMain(string[]args)
{
Typetype=typeof(Employee);

//使用無參構(gòu)造函數(shù)動態(tài)創(chuàng)建對象
varobjNull=type.InvokeMember(null,BindingFlags.CreateInstance,null,null,null);

//調(diào)用兩個使用了兩個string參數(shù)的構(gòu)造函數(shù)動態(tài)創(chuàng)建對象
varfrankJob=type.InvokeMember(null,BindingFlags.CreateInstance,null,null,newobject[]{"job","frank"});

//調(diào)用公有成員屬性get方法
varfileName=type.InvokeMember("FirstName",BindingFlags.GetProperty,null,frankJob,null);

//調(diào)用公有成員屬性set方法
type.InvokeMember("Email",BindingFlags.SetProperty,null,frankJob,newobject[]{"gyzdfasddfsafhao@vervidian.com"});

//動態(tài)調(diào)用無參數(shù)方法
varobjStr=type.InvokeMember("ToString",BindingFlags.InvokeMethod|BindingFlags.Public|BindingFlags.Instance|BindingFlags.Static,null,frankJob,null);

//動態(tài)調(diào)用帶參數(shù)的方法
varemail=type.InvokeMember("GetEmail",BindingFlags.InvokeMethod,null,frankJob,newobject[]{"sunshine"});
}

publicclassEmployee
{
publicintId{get;set;}
publicstringFirstName{get;set;}
publicstringLastName{get;set;}
publicstringAddress{get;set;}
publicstringEmail{get;set;}

publicEmployee(){}
publicEmployee(stringfirstName,stringlastName)
{
FirstName=firstName;
LastName=lastName;
}

publicoverridestringToString()
{
returnstring.Format("{0}{1}",LastName,FirstName);
}

publicstringGetEmail(stringuser)
{
returnstring.Format("{0}@gmail.com",user);
}
}
}

相關(guān)文章

  • C#用記事本編寫簡單WinForm窗體程序

    C#用記事本編寫簡單WinForm窗體程序

    這篇文章主要為大家詳細介紹了C#用記事本編寫簡單WinForm窗體程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C#中struct和class的區(qū)別詳解

    C#中struct和class的區(qū)別詳解

    這篇文章主要介紹了C#中struct和class的區(qū)別,對C#初學者來說是需要牢固掌握的,需要的朋友可以參考下
    2014-08-08
  • C#利用delegate實現(xiàn)Javascript的each方法

    C#利用delegate實現(xiàn)Javascript的each方法

    這篇文章主要為大家介紹了介紹了C#利用delegate實現(xiàn)Javascript的each方法,感興趣的朋友可以參考一下
    2016-01-01
  • c#中Invoke與BeginInvoke的用法及說明

    c#中Invoke與BeginInvoke的用法及說明

    這篇文章主要介紹了c#中Invoke與BeginInvoke的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C# WINFORM自定義異常處理方法

    C# WINFORM自定義異常處理方法

    這篇文章主要介紹了一個簡單的統(tǒng)一異常處理方法。系統(tǒng)底層出現(xiàn)異常,寫入記錄文件,系統(tǒng)頂層捕獲底層異常,顯示提示信息。需要的可以參考一下
    2021-12-12
  • C#用戶定義類型轉(zhuǎn)換詳解

    C#用戶定義類型轉(zhuǎn)換詳解

    用于自定義類和結(jié)構(gòu)能夠進行隱式轉(zhuǎn)換和顯示轉(zhuǎn)換.例如:將一個自定義類類型轉(zhuǎn)換成整型,浮點型等,反之亦然
    2014-01-01
  • WPF彈出右鍵菜單時判斷鼠標是否選中該項

    WPF彈出右鍵菜單時判斷鼠標是否選中該項

    這篇文章介紹了WPF彈出右鍵菜單時判斷鼠標是否選中該項的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 使用C#創(chuàng)建Windows服務(wù)的實例代碼

    使用C#創(chuàng)建Windows服務(wù)的實例代碼

    這篇文章主要介紹了使用C#創(chuàng)建Windows服務(wù)的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • C#如何利用反射將枚舉綁定到下拉框詳解

    C#如何利用反射將枚舉綁定到下拉框詳解

    這篇文章主要給大家介紹了關(guān)于C#如何利用反射將枚舉綁定到下拉框的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧
    2018-07-07
  • C# 實現(xiàn)對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現(xiàn)對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現(xiàn)對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11

最新評論

水城县| 上饶市| 龙门县| 英吉沙县| 威远县| 云浮市| 南昌县| 博野县| 习水县| 铁岭县| 思南县| 新乐市| 怀安县| 汶川县| 蕲春县| 揭东县| 闽清县| 宣恩县| 鲁甸县| 峨眉山市| 普定县| 四会市| 都兰县| 通辽市| 清镇市| 黑河市| 武隆县| 揭西县| 凤冈县| 古蔺县| 霍城县| 鹤峰县| 平阴县| 阜新市| 图们市| 江孜县| 自治县| 临漳县| 汕尾市| 互助| 禹州市|