簡體   English   中英

驗證您無法控制數據或類的類的屬性?

[英]Validating properties of a class where you don't have control of the data or the class?

我正在嘗試學習一種聰明的,設計模式類似的方法來驗證庫類的屬性,該類保存從Web服務(eBay SDK)返回的電子商務訂單的數據。

對此還有其他問題,但由於以下原因,我無法將其應用於我的情況:

  • 我要驗證的類來自一個SDK,它沒有標記為virtual的屬性,因此它衍生自我必須隱藏new的基本屬性,並在new屬性中調用base才能訪問它們。
  • 如果我從基類派生並使用帶有base.propertyName的new修飾符,以有效地復制類屬性,並能夠在它們之上添加驗證屬性,則無法將我要驗證的對象轉換為該派生類具有可以調用.Validate()的屬性,因為您無法從基本類型“派生”為派生類型。

是否有任何方法可以進行合同樣式的類屬性驗證,從而使您沒有要驗證的類的類定義控件? 而不是創建一個具有20個if語句的驗證器類,對每個屬性執行null檢查和邏輯?

我只需要一個特定的對象,並且我知道屬性和有效的值,就可維護性和代碼質量而言,我只是不覺得將命令傳遞給帶有if語句的類是不錯的。

這是我想為可以調用.Validate()的派生類型編寫的代碼,由於我不知道如何獲取基類並將其轉換為此類,所以我停止編寫此代碼:

    public class ValidatableOrderType : eBay.Service.Core.Soap.OrderType
    {
        public ValidatableOrderType(eBay.Service.Core.Soap.OrderType baseType)
        {

        }

        [Required(ErrorMessage = "OrderID cannot be null.")]
        new public string OrderID
        {
            get { return base.OrderID; }
        }
    }

我認為您最好的選擇是使用fluentvalidator。

https://fluentvalidation.net/

它是一個出色的驗證軟件,比元數據屬性更強大。

我希望這可以幫助你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM