Rus*_*ova 5 c# entity-framework entity-framework-4 entity-framework-4.1
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" });
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个基类Animal 实现IValidatableObject,现在从Dog子类的Validate方法也实现IValidatableObject,我想调用基类的 Validate方法.
我试过(它没有调用基类的验证)
base.Validate(validationContext);
Run Code Online (Sandbox Code Playgroud)
在您的代码示例中,您没有从Animal派生您的狗类.只有在遍历结果集时才会调用动物的验证方法:
public class Dog : Animal
{
public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
foreach(var result in base.Validate(validationContext))
{
}
//dog specific validation follows here...
}
}
Run Code Online (Sandbox Code Playgroud)
只调用base.Validate()而不迭代返回的集合将不会调用base的验证方法.希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
3276 次 |
| 最近记录: |