起初一直糾結於如何呼叫特性附著在下面那個成員的值,後來發現不需要呼叫,通過反射載入的時候是自動繫結上去的,即 獲得成員物件之後,有乙個方法可以獲得特性標籤。
其實從類庫提供者,和類庫使用者的角度,分開來看就很容易理解了。
類庫提供者(myclasslib類):
myclasslib類有乙個showstring(object obj, string name)方法,可以列印出string資訊。
並且提供乙個stringlenattribute特性,控制字串長度。
類庫使用者:
使用這個名為myclasslib的類,來列印資訊
下面看例子
使用者:
publicuse[stringlen(xx)]class
user
}
這個是自定義的特性
來看看提供者方面的**
提供者:
定義自定義特性:
[attributeusage(attributetargets.field, inherited = false, allowmultiple = true然後是列印字串這個方法,和應用特性:)]public
sealed
class
stringlenattribute : attribute
public stringlenattribute(int
len)
}
publicproviderclass
myclasslib}}
console.writeline(name);}}
反射呼叫的話,應該是必須得到物件才能使用裡面成員,所以要傳入2個引數,真正編寫的時候肯定涉及自己的結構類,所以這個問題並不明顯。如果以後找到解決方法,會更新這篇文章。
C 特性Attribute學習
起初一直糾結於如何呼叫特性附著在下面那個成員的值,後來發現不需要呼叫,通過反射載入的時候是自動繫結上去的,即 獲得成員物件之後,有乙個方法可以獲得特性標籤。其實從類庫提供者,和類庫使用者的角度,分開來看就很容易理解了。類庫提供者 myclasslib類 myclasslib類有乙個showstrin...
c 特性 Attribute 學習總結1
特性是用於在執行時傳遞程式中各種元素 類 方法 結構 列舉 元件等 的行為資訊的宣告性標籤。官方的解讀不好理解,舉個常用的例子,平時會在類的上面加上 serializable serializable就是testclass這個類的乙個特性,它表示這個類是可以被序列化的。如下圖 net框架提供兩種型別...
c 特性 Attribute 學習總結2
通過特性提供額外行為的例項 自定義特性做資料驗證 效驗屬性值的大小和非空 學生類中有個qq的屬性,效驗qq不能小於100000 5位數 不能大於999999999999 12位數 並且qq的屬性不能為空。如果滿足這些效驗返回true,否則返回false。宣告乙個抽象類,所有的自定義特性都繼承自這個抽...