使用System.ComponentModel.DataAnnotations.Validator验证属性

Ibr*_*jar 10 .net c# wpf

我有我的实体设置与数据注释验证属性,我试图使用静态Validator类验证它,但我得到不同的例外,这不是正确的方法:

string _ValidateProperty(object instance, string propertyName)
        {
            var validationContext = new ValidationContext(instance, null, null);
            validationContext.MemberName = propertyName;
            var validationResults = new List<ValidationResult>();
            var isValid = Validator.TryValidateProperty(instance, validationContext, validationResults);
            if (isValid)
                return string.Empty;
            return validationResults.FirstOrDefault<ValidationResult>().ErrorMessage;
        }
Run Code Online (Sandbox Code Playgroud)

wal*_*wal 12

您还没有说明Exception您收到的内容,但是TryValidateProperty当您传递特定属性的时,您似乎正在将您的实例传递给该方法.

代替

Validator.TryValidateProperty(instance, validationContext, validationResults);
Run Code Online (Sandbox Code Playgroud)

尝试

Validator.TryValidateProperty(propertyValue, validationContext, validationResults);
Run Code Online (Sandbox Code Playgroud)

你将不得不传递propertyValue给你的方法(或使用会慢的反射)

例如

_ValidateProperty(someObject, "Field1", someObject.Field1);
Run Code Online (Sandbox Code Playgroud)