4

我正在阅读 MvvmLight 的源代码,我在 ViewModelBase.cs 中看到了这个函数:

protected virtual void RaisePropertyChanged(string propertyName)
{
    PropertyChangedEventHandler changedEventHandler = this.PropertyChanged;
    if (changedEventHandler == null)
        return;
    changedEventHandler((object) this, new PropertyChangedEventArgs(propertyName));
}

我不明白为什么这里有演员表,但因为这个功能在 MvvmLight 中很关键,我猜这样做有一个优势......

4

2 回答 2

6

如果您正在查看代码,Reflector您将始终看到类似这样的奇怪内容,因为 Visual Studio 允许您采用编译器为您解决的捷径,例如将类型作为对象传递而不将其强制转换为对象。

但是要回答您的问题,事件处理程序需要一个对象,因此它传递this(object)

于 2012-07-03T12:04:32.860 回答
2

这样做的好处可能是因为方法有一个或多个重载,changedEventHandler并且类型this通常会调用更具体的重载,但在这种情况下,调用者希望确保object选择重载。

这是一个假设的猜想——它可能是也可能不是实际原因。:-)

于 2012-07-03T12:06:29.723 回答