PostSharp 的 Contract 跟 Conde Contract 一樣,具備可被繼承的特性。凡是套用在 abstract、virtual、或 interface 方法上的 Contract,其子類別都會繼承到,在開發上十分的好用。
這邊來看個例子,筆者撰寫了個 IWritable 的介面,在其 Write 方法上我們加上了 RequiredAttribute,再建立個 Blog 類別去實作該介面。
1 | Using System; |
當我們呼叫 Blog.Write 時,因為 Blog 類別從 IWritable 介面繼承了 Write 方法及其 Contract,所以叫用時若帶的是空值就會丟出例外。