객체 지향 프로그래밍에서는 클래스가 기본 클래스에서 이벤트를 상속하는 것이 일반적입니다. 그러나 상속된 이벤트를 발생시키면 혼란이 발생할 수 있습니다. 이 질문은 파생 클래스에서 상속된 이벤트를 발생시키려고 할 때 발생하는 오류를 해결하고 이에 대한 솔루션을 제공합니다.
다음과 같이 정의된 기본 클래스에서:
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; }
파생 클래스가 상속된 이벤트를 발생시키려고 합니다.
public class DerivedClass : BaseClass { // Error: 'BaseClass.Loading' can only appear on the left hand side of += or -= this.Loading(this, new EventHandler()); }
이 오류는 이벤트에 액세스할 수 없음을 나타냅니다. "this" 키워드를 직접 사용합니다.
상속된 이벤트를 발생시키려면 기본 클래스에 보호된 메서드를 정의하여 이벤트 호출을 처리해야 합니다. 이러한 메서드를 사용하면 파생 클래스가 이벤트를 재정의하는 경우에도 이벤트가 발생할 수 있습니다.
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; protected virtual void OnLoading(EventArgs e) { EventHandler handler = Loading; if (handler != null) handler(this, e); } protected virtual void OnFinished(EventArgs e) { EventHandler handler = Finished; if (handler != null) handler(this, e); } // Invoking the events from the derived class public class DerivedClass : BaseClass { public void RaiseLoadingEvent() { OnLoading(EventArgs.Empty); } public void RaiseFinishedEvent() { OnFinished(EventArgs.Empty); } } }
파생 클래스에서 OnLoading 또는 OnFinished를 호출하면 기본 클래스의 이벤트를 구독하는 핸들러가 호출됩니다. , 파생 클래스에서 적절한 이벤트 처리를 보장합니다.
위 내용은 C# 파생 클래스에서 상속된 이벤트를 올바르게 발생시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!