C# 中套用屬性即為宣告式編程。優點:程式碼簡潔、可讀性高、錯誤少、維護易。
[WebMethod]
public string HelloWorld() => "Hello World";
ASP.NET 執行時期透過反射偵測屬性,自動產生 WSDL、SOAP 端點、測試頁面。開發者無需手寫任何基礎設施代碼。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class DefaultSortAttribute : Attribute {
public string Name { get; set; }
public DefaultSortAttribute(string name) => Name = name;
}
[DefaultSort("Name")]
public class Customer { public string Name { get; set; } ... }
通用比較器 GenericComparer 透過反射讀取屬性,動態比較指定屬性:
customerList.Sort(new GenericComparer(typeof(Customer)));
修改屬性參數即可變更排序行為,無需修改演算法代碼。
宣告式編程將「行為定義」與「演算法實作」分離。單一宣告驅動行為變更,而非分散在多處演算法中。打造更易讀、易維護、錯誤更少的代碼庫。