我正在开发一个Web API2应用程序,需要有条件地验证客户端发送的DTO。我目前正在使用基于属性的验证。
我的设计是有一个IDtoValidator
接口,它有一个IsValid()
方法来验证数据。
我还需要以用户可读的格式提供错误消息,该格式存在于接口本身中,以便实现接口的每个类都可以放入自己的错误消息。
以下是我的课程:
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,这是接口的另一个属性。只需要私密设置,这不能在界面中完成。
答案 0 :(得分:1)
您可以在界面中公开Getter,如
String GetError()
或
List<String> GetErrors()
在第二个原型中,您可能希望返回一个不可变的集合\ list,以便无法将Error(s)添加到外部列表中。