5
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 जो Dog उप-वर्ग के Validate विधि जो भी IValidatableObject लागू करता है से IValidatableObject लागू करता है, अब है, मैं आधार वर्ग के Validate विधि कॉल करना चाहते हैं।इकाई की रूपरेखा 4.1: ओवरराइड IEnumerable <ValidationResult> मान्य

मैं कर रहा करने की कोशिश की है (यह आधार वर्ग के सत्यापित करें फोन नहीं करता है)

base.Validate(validationContext); 

उत्तर

8

अपने कोड नमूने में आप पशु से अपने कुत्ते वर्ग प्राप्त नहीं किया था।

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(): यदि आप परिणाम सेट के माध्यम से पुनरावृति जानवर के सत्यापन विधि केवल बुलाया जाएगा। आशा है, यह मदद करता है। (पशु से विरासत):

+0

असल में मेरे कोड इस हिस्से "पशु सार्वजनिक वर्ग डॉग" शामिल रिटर्न ToList() कॉल करने के लिए की जरूरत है। सवाल पूछते समय यह सिर्फ एक टाइपो था, इसे सही किया। –

+0

क्या आपने आधार पर कॉल करने का प्रयास किया था। वैध() और लौटा परिणाम सेट के माध्यम से पुनरावृत्त? इससे आपकी समस्या का समाधान हो जाना चाहिए। पशु की वैध विधि को बुलाया जाता है! – Hans

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

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

आप के बाद से आधार विधि IEnumerable प्रकार डेटा

संबंधित मुद्दे