相关疑难解决方法(0)

自定义DataAnnotation IsValid未调用

背景

大家好,

基本上,我在.NET核类库中编写自定义数据注释,它将验证IEnumerable至少具有一定数量的元素.


问题

出于某种原因,在运行验证时,永远不会调用IsValid.我已经找到了一些关于这个问题的其他SO问题,但它们都有一个与我不同的问题(基本上,它们实际上并没有验证它们的对象).但是,我正在验证我的对象(调用Validator.TryValidateObject(...)),然而,从未调用过IsValid.

如果我使用任何开箱即用的验证属性(例如必需),它将按预期运行.


代码

MinElementsAttribute.cs

public class MinElementsAttribute : ValidationAttribute
{
    readonly int minElements;

    public MinElementsAttribute(int minElements) : base($"Collection must have a size of at least {minElements}")
    {
        this.minElements = minElements;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var list = value as IEnumerable<object>;

        if(list == null || list.Count() < this.minElements)
        {
            return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
        }

        return ValidationResult.Success;
    }
}
Run Code Online (Sandbox Code Playgroud)

MinElementsTests.cs

[Fact]
public void TestValidation()
{
    var validationResults = new List<ValidationResult>();
    var testObject …
Run Code Online (Sandbox Code Playgroud)

c# validation

6
推荐指数
1
解决办法
2067
查看次数

标签 统计

c# ×1

validation ×1