0

我有一个DataModel实现INotifyDataErrorInfo接口的类。在我的应用程序中,我的所有模型都从这个应用程序继承,因此我不必编写错误处理逻辑,也不必更改任何其他类中的通知。如何引发下面的基类事件,但将调用它的子类作为发送者发送?我想尽量减少重复代码,并希望避免整个虚拟和覆盖场景。

virtual void SetErrors(string propertyName, List<string> propertyErrors)
{
    //clear any errors that already exist for this property
    errors.Remove(propertyName);

    //add the list of errors for the specified property
    errors.Add(propertyName, propertyErrors);

    //raise the error notification event
    if (ErrorsChanged != null)
        ErrorsChanged(this, new DataErrorsChangedEventArgs(propertyName));
}

编辑-问题不够清楚

例如说我有这门课

public class GangMember : Models.Base_Classes.DataObject
{

    int _age;
    public int Age
    {
        set
        {
            _age = value;
            if (value < 0)
            {
                List<string> errors = new List<string>();
                errors.Add("Age can not be less than 0.");
                SetErrors("Age", errors);
            }
        }
    }

}

SetErrors()在我的基类中被调用时,DataModel它会引发它的事件ErrorsChanged并将其传递给它自己的一个实例this。在这种情况下,如何获得对子类的引用GangMember

4

1 回答 1

3

this总是指向被调用的类,而不是实现类。

public class A
{
    public void PrintType()
    {
        Console.WriteLine(this.GetType().ToString());
    }
}

public class B : A
{
}

// ...

new B().PrintType(); // This will give "B", not "A".
于 2013-07-06T19:06:39.167 回答