如何使这个验证逻辑更好?

时间:2017-11-02 19:34:17

标签: c# .net validation c#-4.0 asp.net-web-api2

我的验证层中有一段代码,如----

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.Billingmodel.CreditCard中至少一项的要求。两者都无法提供。

现在,我有第三个要验证的新属性 - model.DebitCard - 并且验证逻辑变得更加混乱,因为我必须提供组合。

至少应提供一个,并且只应提供其中一个,否则验证失败。

如何以可扩展且高效的方式编写此逻辑,以便如果明天有第四个属性,那么它也可以轻松考虑?

2 个答案:

答案 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."));
 }