a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

c#使用反射調用類型成員示例

2020-01-24 02:50:18
字體:
來源:轉載
供稿:網友

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

使用反射的原因

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

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

使用反射動態調用代碼

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

復制代碼 代碼如下:

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

//使用無參構造函數動態創建對象
varobjNull=type.InvokeMember(null,BindingFlags.CreateInstance,null,null,null);

//調用兩個使用了兩個string參數的構造函數動態創建對象
varfrankJob=type.InvokeMember(null,BindingFlags.CreateInstance,null,null,newobject[]{"job","frank"});

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

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

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

//動態調用帶參數的方法
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);
}
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 2022久久国产露脸精品国产 | 国产精品视频免费 | 网址你懂的在线观看 | 亚洲精品成人无限看 | 欧美成人性生活视频 | 国产午夜精品久久久久久久 | 男女视频在线免费观看 | 国产精品国产a级 | 91午夜在线 | 国产婷婷久久 | 国产精品无码久久久久 | 欧美精品网站 | 久久亚洲一区 | 国产亚洲综合精品 | 一级黄色录像免费观看 | 久久伊| 亚洲一二三区不卡 | 午夜国产一级片 | ririsao久久精品一区 | 久久久亚洲精品视频 | 国产精品69毛片高清亚洲 | 久草在线看片 | а天堂中文最新一区二区三区 | 日韩三级电影在线观看 | 欧美久久精品 | 欧美日韩激情在线 | 国产成人免费视频 | 亚洲毛片网站 | 狠久久 | porn一区| 毛片福利| 狠狠操综合网 | 日韩av一区二区三区在线 | 日韩一级免费 | 国产一极片| 性视频亚洲 | 高清一区二区三区 | 久久青青 | 超碰免费在线观看 | 欧美在线观看禁18 | 日韩一区在线播放 |