已經很久沒使用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;
將它轉型成剛剛自訂的Attribute(InfoAttribute),即可在程式中使用。
使用Attribute的時機,通常是已經知道這個物件的特性,
藉由屬性設定來訂定物件的相關特性,
而不用藉由一堆程式撰寫,將這些已知的屬性設計進Class中,
在WCF裡,使用屬性方式來訂定傳輸的一些設定,透過屬性的設定之後,
就可以完成物件的設計。
PS.寫得很亂,還是先大致寫到這。