我在C#項目中有一堆數據類。我需要在處理這些類的對象之前執行驗證。這些類不具有共同的接口。 我想制定某種設計模式,我可以指定需要在類的每個字段上執行驗證;而沒有一組其他類型的條件。C#數據驗證設計模式
我遇到了規範模式,但這似乎並不令人信服。
我可以使用任何現有模式/ C#方法嗎?
[更新:我結束了使用註釋和規範模式的組合。基本驗證可以通過註釋完成。如果發生任何不能通過註釋驗證的特殊情況,那些驗證通過規範書寫]
我在C#項目中有一堆數據類。我需要在處理這些類的對象之前執行驗證。這些類不具有共同的接口。 我想制定某種設計模式,我可以指定需要在類的每個字段上執行驗證;而沒有一組其他類型的條件。C#數據驗證設計模式
我遇到了規範模式,但這似乎並不令人信服。
我可以使用任何現有模式/ C#方法嗎?
[更新:我結束了使用註釋和規範模式的組合。基本驗證可以通過註釋完成。如果發生任何不能通過註釋驗證的特殊情況,那些驗證通過規範書寫]
您可能只想使用屬性來指定您的驗證規則。這是所有基本驗證存在的名稱空間:ComonpentModel.DataAnnotations。如果你想更有趣,這個NuGet包給你很多額外的屬性:Data Annotation Extensions。這兩個都支持ASP.NET MVC不顯眼驗證的客戶端驗證。
除了Milimetric的回答,你也可以看看Code Contracts。從你的問題這一點並不明顯,如果它會適合您的需要
代碼合同規定的方式指定的先決條件,後置條件, 和對象不變量在你的代碼。前提條件是需求 ,在輸入方法或屬性時必須滿足。後續條件 描述了方法或財產代碼退出時的期望值。 對象不變量描述處於良好狀態的類的預期狀態。
看一看NCommon庫,它是規格和驗證周圍有用模式的集合。
有關更多鏈接和信息,還請參閱my answer to this post。