|
系列文章導(dǎo)航:
不能不說的C#特性-迭代器(上)及一些研究過程中的副產(chǎn)品
不能不說的C#特性-迭代器(下),yield以及流的延遲計算
走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇
走進(jìn)Linq-Linq to Objects(下)實例篇
走進(jìn)Linq-Linq to SQL感性認(rèn)識篇
走進(jìn)Linq-Linq to SQL How do I(1)
走進(jìn)Linq-Linq to SQL How do I(2)
走進(jìn)Linq-Linq to SQL How do I(3)
走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)
走進(jìn)Linq-Linq to SQL源代碼賞析 Table
走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化
走進(jìn)Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq
在我們的編程生涯中我們要使用很多很多類庫,這些類庫有的是我們自己開發(fā)的,我們有她的代碼,有的是第三方發(fā)布的,我們不僅沒有他們的代碼,連看的機(jī)會都沒有。
作為.NET程序員,我們每天都要和BCL(Base Class Linbrary)打交道。無疑,BCL做為一個年輕的框架類庫,她是成功的,但是還有一些時候我們還是得寫一些”Helper”方法來擴(kuò)展類庫,由于我們不能修改類庫的源代碼,我們只有寫一個個的靜態(tài)類。雖然在使用上也算方便,但作為追求完美的程序員來說總有些不雅。現(xiàn)在我就碰到這樣的事情,前兩天奉命寫一個從XML文件加載Chart圖的設(shè)置的方法,從XML加載數(shù)據(jù)綁定到對象上,這肯定是反射的用武之地了。我經(jīng)常需要寫一些根據(jù)對象屬性名字來判斷這個對象是否有這個屬性或者根據(jù)屬性名獲取該屬性的值。還是按照平常一樣,我很快寫了一個PropertyHelper,里面有兩個靜態(tài)方法:HASProperty,GetValueByName。
PropertyHelper.HASProperty(point, "X"),如此的調(diào)用也還過得去,不過在C# 3.0微軟為我們提供了擴(kuò)展方法?,F(xiàn)在我們可以直接這樣調(diào)用了point.HASProperty(“X”);看看我是如何實現(xiàn)這個擴(kuò)展方法的?
public static class PropertyExtension{
public static object GetValueByName(this object self, string propertyName)
{
if (self == null)
{
return self ;
}
Type t = self.GetType();
PropertyInfo p = t.GetProperty(propertyName);
return p.GetValue(self, null);
}
}
it知識庫:不能不說的C#特性-擴(kuò)展方法,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。