. 그래서 두 가지 시나리오는이 문제를 일으킬 것이라고이 있습니다 :
이 필드 같은 이벤트가 아니라 사용자 정의 add
/remove
접근을 가지고있는 경우에만 사용자 정의 코드가 대리자가 저장되는 방법을 알고
현재 유형에서는 선언되지 않았지만 기본 유형 또는 관련이없는 객체에 있습니다.이 경우에는 일반적으로 OnCustomEvent
메소드를 통해 이벤트를 호출하기 위해 선언 유형을 가져와야합니다 . 염기 형의 경우, 규칙은 서브 클래스 override
(코멘트)을 통해 이벤트에 이벤트 및 후크를 호출 할 수 있도록 이러한 방법 protected virtual
을 만드는 것
case1처럼 보입니다. 그러나이 문제를 해결하기 위해 무엇을해야하는지 이해할 수 없습니다.당신이있는 경우
/remove
사용자 정의 add
, 다음 호출 할 어떻게 구현 고유 (나는 내가 add
/remove
를 볼 수 있다면 더 말할 수), 그러나의 두 가지 일반적인 구현을 살펴 보자입니다 :
A : 배킹 대표 :이 경우
private EventHandler someEvent;
public event EventHandler SomeEvent
{
add { someEvent += value; }
remove { someEvent -= value; }
}
은 "호출"구현은 다음과 같습니다
if(someEvent != null) someEvent(this, EventArgs.Empty);
또는 여분의주의를 기분 경우 :
var handler = someEvent;
if(handler != null) handler(this, EventArgs.Empty);
(1B) : 측정 EventHandlerList
(스파 스 이벤트에 사용) 다음 호출 구현 될
private static readonly object SomeEventKey = new object();
public event EventHandler SomeEvent
{
add { Events.AddHandler(SomeEventKey, value); }
remove { Events.RemoveHandler(SomeEventKey, value); }
}
하는 경우 :
을
var handler = (EventHandler)Events[SomeEventKey];
if(handler != null) handler(this, EventArgs.Empty);
'CustomEvent' 란 무엇입니까? –
사용자 지정 이벤트로 컨트롤을 연결하려고하면 어떻게됩니까? – SpaceApple
@SpaceApple 그는 그렇지 않습니다. 그가 * 호출하고 있습니다. –