RoutedEventArgs.InvokeEventHandler(Delegate, Object) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 재정의된 경우 기본 구현 이상으로 효율성을 높일 수 있는 형식별 방법으로 이벤트 처리기를 호출하는 방법을 제공합니다.
protected:
virtual void InvokeEventHandler(Delegate ^ genericHandler, System::Object ^ genericTarget);
protected virtual void InvokeEventHandler (Delegate genericHandler, object genericTarget);
abstract member InvokeEventHandler : Delegate * obj -> unit
override this.InvokeEventHandler : Delegate * obj -> unit
Protected Overridable Sub InvokeEventHandler (genericHandler As Delegate, genericTarget As Object)
매개 변수
- genericHandler
- Delegate
호출할 제네릭 처리기/대리자 구현입니다.
- genericTarget
- Object
지정된 처리기가 호출되어야 하는 대상입니다.
예제
다음은 구현에 사용할 수 있는 기본 패턴을 보여 주는 의사 코드입니다. MyRoutedEventHandler
다음은 .의 RoutedEventHandler하위 클래스입니다.
public class MyRoutedEventArgs : RoutedEventArgs
{
// other members omitted
protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) {
MyRoutedEventHandler handler = (MyRoutedEventHandler) genericHandler;
handler(genericTarget, this);
}
}
Public Class MyRoutedEventArgs
Inherits RoutedEventArgs
' other members omitted
Protected Overrides Sub InvokeEventHandler(ByVal genericHandler As System.Delegate, ByVal genericTarget As Object)
Dim handler As MyRoutedEventHandler = CType(genericHandler, MyRoutedEventHandler)
handler(genericTarget, Me)
End Sub
End Class
설명
기본 구현은 리플렉션을 통합하여 처리기가 문자 그대로 RoutedEventHandler가 아닌 모든 경우에 적합한 처리기를 결정하며, 이 리플렉션 단계에서는 몇 가지 성능 결과가 발생합니다. 호출은 리플렉션에 의존하지 않음으로써 더 효율적으로 만들 수 있습니다. 이 시나리오는 이 메서드를 재정의하도록 선택한 라우트된 이벤트 인수 클래스에 사용할 수 있도록 동기를 부여하는 시나리오입니다. 구현은 형식 안전 처리기를 호출해야 하므로 구현에서 이 메서드의 기본을 호출해서는 안 됩니다.
상속자 참고
이 메서드는 대리자의 보다 효율적인 호출을 제공하기 위해 파생 이벤트 데이터 클래스에 의해 재정의됩니다. 구현은 제공된 형식별 대리자에게 캐스팅한 genericHandler
다음 해당 처리기를 호출해야 합니다.
기본 구현은 제공된 처리기를 호출하여 캐스팅을 RoutedEventHandler시도합니다. 둘 중 하나 genericHandler
또는 genericTarget
제공 null
된 경우 예외가 발생합니다.