0

我目前必须为我的应用程序验证自定义字段对象。简单地说,每个 Field 对象都包含有关字段验证的信息以及字段的值。我正在批量验证字段,所以目前,我有一个验证类,每个验证都有一个方法。对于必填字段,它看起来像这样:

      private void RequiredFields()
      {
            foreach (Field field in allFields)
            {
                if ((field.Required == true) && (field.Value == string.Empty))
                {
                    field.isValid = false;
                }
            }
      }

现在我的问题是我觉得我应该对验证进行一层抽象,所以不要说:

if ((field.Required == true) && (field.Value == string.Empty))

...我会添加一个验证类,以接受这些值并将其变成这样:

if (!validater.RequiredFields(field.Required, field.Value))

如果我这样做,它将允许我在不使用字段对象的情况下重用验证类,并且还可以进行更好的单元测试……但是,这似乎是不必要的抽象层,而且有些重复…… . 请记住,这是所有验证中最简单的。

建议?

4

1 回答 1

2

为什么不让 Field 对象负责自己的验证?

class Field
{
    public bool Required { get; }
    public string Value { get; set; }

    // assuming that this method is virtual here
    // if different Fields have different validation logic
    // they should probably be separate classes anyhow and
    // simply implement a common interface of inherit from a common base class.
    public override bool IsValid
    {
        get { return Required && Value != String.Empty; }
    }
}
于 2009-08-17T20:37:27.327 回答