如何在基类事件参数中检索作为发送方的子类实例
本文关键字:实例 子类 检索 基类 事件 参数 | 更新日期: 2023-09-27 18:21:13
我有一个名为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);
}
}
}
}
当在我的基类DataModel
中调用SetErrors()
时,它会引发它的事件ErrorsChanged
,并将它自己的实例this
传递给它。在这种情况下,我如何获得子类GangMember
的参考?
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".