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

C# 使用System.ComponentModel.DataAnnotations.Validator验证属性,c#,.net,wpf,C#,.net,Wpf,我的实体设置带有验证属性,我试图使用静态类对其进行验证,但我遇到了不同的异常,这不是正确的方法吗: string _ValidateProperty(object instance, string propertyName) { var validationContext = new ValidationContext(instance, null, null); validationContext.MemberName = pro

我的实体设置带有验证属性,我试图使用静态类对其进行验证,但我遇到了不同的异常,这不是正确的方法吗:

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;
        }
string\u ValidateProperty(对象实例,字符串属性名称)
{
var validationContext=新的validationContext(实例,null,null);
validationContext.MemberName=propertyName;
var validationResults=新列表();
var isValid=Validator.TryValidateProperty(实例、validationContext、validationResults);
如果(有效)
返回字符串。空;
返回validationResults.FirstOrDefault().ErrorMessage;
}

您尚未说明收到的
异常
,但似乎您正在将实例传递给
TryValidateProperty
方法,而此时您应该传递特定属性的值

而不是

Validator.TryValidateProperty(instance, validationContext, validationResults);
试一试

您必须将
propertyValue
向下传递给您的方法(或者使用反射,反射速度较慢)

乙二醇


好吧,你是对的,我不知道我在哪里读到过小心不要将属性值传递给TryValidateProperty,而是传递给实际的对象实例,尽管如此,我应该这样做,谢谢你,我会在12小时后让我访问网站时给你奖金。
Validator.TryValidateProperty(propertyValue, validationContext, validationResults);
_ValidateProperty(someObject, "Field1", someObject.Field1);