So validieren Sie untergeordnete Objekte, indem Sie IDataErrorInfo für die übergeordnete Klasse implementieren

Ich entwickle eine WPF-Anwendung mit MVVM-Architektur. Ich bin ein Amateur in WPF, also trag es mit mir.

Ich habe zwei Modellklassen. Übergeordnete Klasse hat ein Objekt einer anderen (untergeordneten) Klasse als Eigenschaft. (ich meine verschachtelte Objekte und nicht geerbte Objekte)

Stellen Sie sich zum Beispiel das folgende Szenario vor.

public class Company
{

   public string CompanyName {get; set;}

   public Employee EmployeeObj {get; set;}
}

public class Employee 
{

   public string FirstName {get; set;}

   public string LastName {get; set;}

}    

Ich möchte die Eigenschaften der Entität "Employee" mithilfe des Validierungsblocks für die Unternehmensbibliothek validieren.

Ich konnte dies tun, indem ich die IDataErroInfo-Schnittstelle in der Mitarbeiterklasse implementierte (siehe unten).

public class Employee :  IDataErrorInfo

{

   [NotNullValidator(MessageTemplate="First Name is mandatory"]
   public string FirstName {get; set;}

   [StringLengthValidator(0,20,MessageTemplate="Invalid")]
   public string LastName {get; set;}

   public string Error
   {
        get
        {
            StringBuilder error = new StringBuilder();

            ValidationResults results = Validation.ValidateFromAttributes<Employee>(this);

            foreach (ValidationResult result in results)
            {
                error.AppendLine(result.Message);
            }

            return error.ToString();
        }

    }

    public string this[string propertyName]
    {
        get
        {
            ValidationResults results = Validation.ValidateFromAttributes<Employee>(this);

            foreach (ValidationResult result in results)
            {
                if (result.Key == propertyName)
                {
                    return result.Message;
                }
            }

            return string.Empty;
        }
    }
}

Ich möchte IDataErroInfo nicht für jedes Kindermodell implementieren, das ich erstelle.

Gibt es eine Möglichkeit, das Employee-Objekt durch Implementierung von IDataErrorInfo für die übergeordnete Klasse (Company) zu validieren?

Und es gibt auch Trigger, um die Validierung von Objekten zu starten. Ich möchte die Objekte nur dann validieren, wenn ich möchte und nicht die ganze Zeit.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage