상속 클래스의 사용자 정의 이벤트 호출
객체 지향 프로그래밍에서 상속을 사용하면 파생 클래스가 기본 클래스의 속성과 동작을 상속받을 수 있습니다. 그러나 상속된 멤버의 특정 측면에는 특별한 처리가 필요할 수 있습니다.
이 경우 특정 작업이 발생할 때 알림을 트리거하는 Loading 및 Finished라는 두 가지 이벤트가 있는 기본 클래스가 있습니다. 상속된 클래스에서 이러한 이벤트를 발생시키려고 하면 오류가 발생합니다.
이 오류가 발생하는 이유는 이벤트가 단순한 메서드가 아니기 때문입니다. 이는 구독된 이벤트 핸들러 목록을 캡슐화하는 대리자입니다. 상속된 클래스에서 컴파일러는 사용자가 이벤트 대리자를 직접 호출하는 대신 이벤트 대리자 자체에 액세스할 것으로 기대합니다.
이 문제를 해결하려면 이벤트 호출을 캡슐화하는 기본 클래스에 보호된 메서드를 만들어야 합니다. OnLoading 및 OnFinished라는 이름의 이 메서드는 이벤트 핸들러가 등록되었는지 확인하고 적절하게 호출합니다.
그런 다음 상속된 클래스에서 이러한 보호된 메서드를 호출하여 이벤트를 발생시킬 수 있습니다. 이를 통해 이벤트 알림이 구독된 모든 핸들러에 올바르게 전파되도록 보장합니다. 예는 다음과 같습니다.
// Base class public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; protected virtual void OnLoading(EventArgs e) { Loading?.Invoke(this, e); } protected virtual void OnFinished(EventArgs e) { Finished?.Invoke(this, e); } } // Derived class public class DerivedClass : BaseClass { public void DoSomething() { ... OnLoading(EventArgs.Empty); ... OnFinished(EventArgs.Empty); } }
이 접근 방식을 따르면 파생 클래스에서 상속된 이벤트를 성공적으로 발생시키고 구독한 이벤트 핸들러에 적절하게 알림을 보낼 수 있습니다.
위 내용은 파생 클래스에서 상속된 이벤트를 올바르게 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!