2010-06-16

複習使用Attribute方法

已經很久沒使用Attribute的方式來設計程式,
今天有一個新專案正好可以適用到這個架構,
乾脆就順便來記錄一下,題外話結束。

1.首先建立一個Class並繼承Attribute

   1:  public class InfoAttribute:Attribute

2.並設定AttributeUsage屬性

   1:  [AttributeUsage(AttributeTargets.Class)]
   2:  public class InfoAttribute:Attribute

3.建立建構式(Constructor),到這一步驟其實設計已經完成。

   1:  public InfoAttribute(string BOName, ClassificationType mDocType)
   2:   
   3:  {
   4:          BONameField = BOName;
   5:          mDocTypeField = mDocType;            
   6:  }

4.在自訂的Class上設定屬性資訊,可以看到下例兩個設定值,這是建構式所需要的。

   1:   [InfoAttribute("DocMaster", InfoAttribute.ClassificationType.DocMaster)]
   2:   
   3:  public class DocMasterInfo

5.若要在程式中使用屬性(Attribute),可使用System.Attribute.GetCustomAttribute的方法

   1:  Type t = this.GetType();
   2:   
   3:  Type tAttribute = typeof(InfoAttribute);
   4:   
   5:  _InfoAtt = System.Attribute.GetCustomAttribute(t, tAttribute) as InfoAttribute;

其中GetCustomAttribute會回傳Object型態的物件,
將它轉型成剛剛自訂的Attribute(InfoAttribute),即可在程式中使用。

使用Attribute的時機,通常是已經知道這個物件的特性,
藉由屬性設定來訂定物件的相關特性,
而不用藉由一堆程式撰寫,將這些已知的屬性設計進Class中,
在WCF裡,使用屬性方式來訂定傳輸的一些設定,透過屬性的設定之後,
就可以完成物件的設計。

PS.寫得很亂,還是先大致寫到這。