2017-10-16 154 views
1

我正在使用Web API2應用程序,需要驗證客戶端有條件地發送的DTO。我正在使用基於屬性的驗證。 我的設計是有一個IDtoValidator接口,其中有一個IsValid()方法來驗證數據。 我需要提供錯誤消息以及用戶可讀的格式,它出現在接口本身中,以便實現接口的每個類都可以放入它們自己的錯誤消息。驗證DTO並獲取錯誤消息

這裏是我的課: 操作方法:

public interface IDtoValidator 
{ 
    bool IsValid(); 
} 

public class FormResponseDto : BaseResponseDto, IDtoValidator 
{ 

    public bool IsValid() 
    { ... some logic to validate the model...} 
} 

我的驗證的操作方法的想法

public async Task<IHttpActionResult> MyMethod(FormResponseDto dto) 
    { 
     if(dto.IsValid()) 
      return BadRequest(dto.GetErrorMessage()); 
    } 

請提出簡潔的設計這一點。 問題是,在isValid()方法中,我需要設置errorMessage,這是接口的另一個屬性。只需要私人設置,這不能在一個界面中完成。

回答

1

您可以在接口暴露一個getter像

String GetError()

List<String> GetErrors()

在第二個原型,你可能需要返回不可變集合\列表中,這樣的錯誤(s)不能從外部添加到列表中。