我有一个班级员工.我希望能够在保存之前验证它()以确保所有字段都填充了有效值.类的用户可以在调用Save()之前调用Validate(),或者他们可以直接调用Save(),然后Save()将调用Validate(),如果验证失败,可能会抛出异常.
现在,我的(主要)问题是这个;
如果我的Validate()函数返回一个简单的bool,那么如何告诉用户该类的错误,即"未填写电子邮件","ID不唯一"等.出于此目的,我只想要错误字符串传递给人类用户,但如果我想要一个错误代码列表(除了使位图的使用更符合逻辑),原则是相同的.
我的具体程序是在C#中,但这看起来像是一个相当通用的"最佳实践"问题,我相信我应该知道答案.任何建议都感激不尽.
我可以创建一个Struct只是为了从这个方法返回,包括一个bool和一个带有错误消息的字符串数组,但只是看起来很笨拙.
它为什么看起来很笨重?创建适当的类型来封装信息是完美的.但是,我不一定会使用字符串来编码这些信息.枚举可能更适合.
另一种方法是对返回类型进行子类化,并为每种情况提供额外的子类 - 如果这是合适的话.如果可能发出多个故障信号,则表示阵列正常.但我也会把它封装在一个自己的类型中.
一般模式可能如下所示:
class ValidationInfo {
public bool Valid { get; private set; }
public IEnumerable<Failure> Failures { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
我可能会选择bitmap-option.只是
[Flags]
public enum ValidationError {
None = 0,
SomeError = 1,
OtherError = 2,
ThirdError = 4
}
Run Code Online (Sandbox Code Playgroud)
...而在调用代码中,只需:
ValidationError errCode = employee.Validate();
if(errCode != ValidationError.None) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
对我来说似乎很好,很紧凑.