本文可以從技術文章下載出獲得,其中包含了一個使用定制屬性的Visual Studio項目示例文件。
屬性類是設計時可應用於類、propertIEs和方法的特殊文類。屬性類提供描述元素某些方面屬性的方式或決定依附於該元素的其它類的行為,進而在運行時可以訪問和檢驗這些描述與行為。你可以將屬性類看作為類成員添加特殊修改器的一種方式。
例如,如果你曾經寫過Web服務,那肯定知道要使得方法在整個服務中是公開的,必須要使用WebMethod屬性。這是一個演示屬性應用的很好的例子,因為我們要用WebMethod屬性擴展編程模型。C#中沒有內建的方式來指定某個方法通過Web服務是可見的(因為內建有表明一個方法是私有的方式),因此需要添加WebMethod屬性來滿足這一需要。
設計自定義屬性
設計自定義屬性的過程十分簡單,在設計屬性前只需要考慮以下幾個方面:
◆使用屬性的目的是什麼?
屬性可以以很多方式使用。你需要定義屬性到底要完成什麼功能並確保這些特定功能沒有內建在.NET框架集中。使用.Net修改器要比使用屬性好,因為這將簡化同其它裝配件的集成過程。
◆屬性必須儲存什麼信息?
屬性是打算用來指示某個功能的簡單標志嗎?或者屬性是否要儲存信息?一個屬性可以擁有設計時賦予的一組信息,並在運行時查看這些信息。例如,看一下示例應用中的別名屬性。
◆屬性應該駐留在哪個裝配件中?
大多數情況下,可以將屬性包含在使用該屬性的裝配件中。不過也有這樣的例子,將屬性駐留在公共的、輕量級的、共享裝配件中會更好些。這種類型的配置允許客戶使用屬性時不必引用不需要的裝配件。
◆哪些裝配件將會識別屬性?
如果沒有模塊讀取屬性,那麼它將一文不值。你很可能將讀取屬性的類放在屬性駐留的同一個裝配件中。然而,正像前面提到的,也有這樣的例子,你想將讀取屬性的方法與屬性自身分別放在不同的裝配件中。