.NET은 실제로 델리게이트를 보유하는 씬 뒤에 프라이빗 인스턴스 변수를 생성하므로 선언 클래스의 이벤트에만 액세스 할 수 있습니다. 이거 ..
public event EventHandler MyPropertyChanged;
실제로이 작업을 수행하고 있습니다.
private EventHandler myPropertyChangedDelegate;
public event EventHandler MyPropertyChanged
{
add { myPropertyChangedDelegate += value; }
remove { myPropertyChangedDelegate -= value; }
}
그리고 이걸 ...
MyPropertyChanged(this, EventArgs.Empty);
실제로 이것은 ...
myPropertyChangedDelegate(this, EventArgs.Empty);
따라서 선언 클래스 내에서만 private 대리자 인스턴스 변수에만 액세스 할 수 있습니다.
컨벤션은 선언 클래스에서 이와 같은 것을 제공하는 것입니다.
protected virtual void OnMyPropertyChanged(EventArgs e)
{
EventHandler invoker = MyPropertyChanged;
if(invoker != null) invoker(this, e);
}
그런 다음 OnMyPropertyChanged(EventArgs.Empty)
해당 클래스의 어느 곳에서나 상속 계층 아래에서 호출하여 이벤트를 호출 할 수 있습니다.