문제

.NET EventHandler는 EventArgs에서 상속되는 템플릿으로 제한됩니다. 그게 어떻게 끝났어? 구현 (vs에서 Refference에 도달)에는 다음 코드가 표시됩니다.

[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);

그러나 나는 Teventargs가 단지 이름이라고 생각합니다. MyClass에서 물려받는 모든 것에 대한 제한 인 타이핑 된 대표를 어떻게 작성할 수 있습니까?

도움이 되었습니까?

해결책

TEventArgs a 일반 유형 매개 변수 - 그러나 그것은 제약이 있습니다. 실제 서명은 다음과 같습니다.

[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
    where TEventArgs : EventArgs

"where TEventArgs : EventArgs"비트는 유형 제약 조건입니다. 즉 인수를 입력하십시오 ~을 위한 TEventArgs 그게 EventArgs 또는 파생 수업.

기본적으로 그것은 단지 "정상적인"C# 제네릭 일 뿐이며 대의원 선언에 적용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top