1

クラス プロパティをテストする次のコードがあります。

public class RegExtTest
{
   [RegularExpression(@"^[A-z0-9]{6}$", ErrorMessage = "Lot must be 6 characters alphanumeric")]
    public string Lot { get; set; }
}

およびこれらのオブジェクトを 1 つ以上含むクラスを検証する汎用拡張メソッド

    public static IEnumerable<string> ValidateObject(this object objectToValidate)
    {
        var result = new List<string>();
        var objType = objectToValidate.GetType();
        var properties = objType.GetProperties();
        foreach (var propertyInfo in properties)
        {
            var attrs = propertyInfo.GetCustomAttributes(typeof(ValidationAttribute), true);
            foreach (var attribue in attrs)
            {
                try
                {
                    var validationAttr = attribue as ValidationAttribute;
                    if (validationAttr != null)
                    {
                        validationAttr.Validate(objectToValidate,propertyInfo.Name);
                    }
                }
                catch (Exception e)
                {
                    if (e is ValidationException)
                        result.Add(e.Message);
                }
            }
        }

        return result;
    }

ただし、値が「a23456」の場合、検証は失敗します。次のように、正規表現クラスを使用してこれを単体テストしました。

var isMatch = Regex.IsMatch(lbp.Lot, "^[A-z0-9]{6}$");

上記のテストはパスします。ここで何が間違っていますか?私が気づいていないRegularExpressionAttributeに落とし穴がありますか

4

2 に答える 2