gpt4 book ai didi

c# - Entity Framework 4.1 : Override IEnumerable Validate

转载 作者:太空狗 更新时间:2023-10-29 22:34:01 29 4
gpt4 key购买 nike

    public abstract class Animal , IValidatableObject
{
public string Id {get;set;}
public string Name {get;set;}
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (this.Name == "animal")
{
yield return new ValidationResult("Invalid Name From base", new[] { "Name" });
}
}
}




public class Dog: Animal, IValidatableObject
{
public string Owner {get;set;}

public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
/*
Here call base validate
*/

if (this.Name == "dog")
{
yield return new ValidationResult("Invalid Name From dog", new[] { "Name" });
}
}

}

我有一个基类 Animal 实现了 IValidatableObject,现在来自 Dog 子类的 Validate 方法,它还实现了IValidatableObject,我想调用基类的Validate方法。

我试过了(它不调用基类的验证)

base.Validate(validationContext);

最佳答案

在您的代码示例中,您没有从 Animal 派生狗类。只有在迭代时才会调用动物的验证方法通过结果集:

public class Dog : Animal
{
public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
foreach(var result in base.Validate(validationContext))
{
}

//dog specific validation follows here...
}
}

只调用 base.Validate() 而不遍历返回的集合不调用基地的验证方法。希望,这会有所帮助。

关于c# - Entity Framework 4.1 : Override IEnumerable<ValidationResult> Validate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057419/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com