我的验证层中有一段代码,如----
if (string.IsNullOrEmpty(model.CreditCard) && string.IsNullOrEmpty(model.Billing))
{
failures.Add(new FailedValidation(
"Billing",
"Billing definition incorrect."));
}
if (!string.IsNullOrEmpty(model.CreditCard) && !string.IsNullOrEmpty(model.Billing))
{
failures.Add(new FailedValidation(
"Billing",
"Billing definition incorrect."));
}
应提供model.Billing
或model.CreditCard
中至少一项的要求。两者都无法提供。
现在,我有第三个要验证的新属性 - model.DebitCard
- 并且验证逻辑变得更加混乱,因为我必须提供组合。
至少应提供一个,并且只应提供其中一个,否则验证失败。
如何以可扩展且高效的方式编写此逻辑,以便如果明天有第四个属性,那么它也可以轻松考虑?
答案 0 :(得分:2)
您可以将字段组合在一起并检查它们以确保只有一个字段为非空。
也许这对你有用:
let header = view as! UITableViewHeaderFooterView
答案 1 :(得分:1)
您是否考虑过xoring状态?
bool isValid = !string.IsNullOrEmpty(model.CreditCard) ^ !string.IsNullOrEmpty(model.Billing);
if (!isValid)
{
failures.Add(new FailedValidation(
"Billing",
"Billing definition incorrect."));
}