2017-10-16 137 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)不能从外部添加到列表中。