문제

그것은 잘 알려진해야 하는 이벤트를 선언하는 등 매개변수 (object sender, EventArgs args).왜?

도움이 되었습니까?

해결책

이를 통해 소비자의 쓰기 능력을 하나의 이벤트 처리기 위해 여러 이벤트와 관계없이 보낸 사람 또는 이벤트입니다.

편집: 당신은 왜 다른 패턴?할 수 있는 상속시키려면 다음을 제공하는 모든 데이터의 양을 변경하는 패턴만 봉사를 혼란스럽게하고 좌절하는 모든 개발자는 것이 강제이 새로운 소비 패턴이다.

다른 팁

실제로 이 논란의 여지가 있는지 여부이 연습을 할 수있는 방법 이벤트입니다.거기에 생각의 학교는 이벤트로는 것을 분리하며 두 개의 세그먼트의 코드,사실 이벤트 처리기를 가져옵 보낸 사람은 무엇을 알고 입력하는 캐스트 보낸 사람으로 하기 위해서 아무것도 그것으로 안티-패턴이다.

기 때문에 그것은 좋은 패턴에 대한 모든 콜백을 메커니즘,언어에 상관없이 적용됩니다.당신이 누구인지 알고 싶어 이벤트를 보낸(발송)하고는 데이터가 해당하는 이벤트(시키려면 다음).

를 사용하여 하나의 매개 변수시키려면 다음을 위해,데이터에 의해 전달되는 이벤트를 추가할 수 있습 데이터를 당신의 이벤트에서는 향후 버전의 소프트웨어의 파괴하지 않고 기존 소비자 있습니다.당신은 단순히 새 멤버를 추가하는 기존시키려면 다음 파생한 클래스를 만들거나 파생된 클래스와 함께 새로운 일원입니다.

그렇지 않으면 일관성과 원리의 이상을 놀라게 정당화시키려면 다음을 사용하여 전달하는 데이터입니다.

로 보낸 사람,일부(전부는 아니지만)경우에 그것은 거대한 컬렉션을 찾을 수있는 유형을 보내의 이벤트입니다.형식을 사용하여 다른 객체를 보낸 사람에 대해 인수도 제한적인:그것은 것을 의미는 다른 보낸 사람은 못을 사용하면 이벤트를 서명이 있습니다.

그것은 좋은 패턴이 사용하는 방법은 무엇인지를 구현하는 이벤트가 무엇인지 찾을 수 있습이었습니다.

또한 무시키려면 다음과 같은 통과 데이터를 통해 그들을 좋은 방법입니다.된 후 호출은 기본 클래스입니다.을 살펴보면 다양한 컨트롤을 호출하는 이벤트,그들을 우선시키려면 다음을 제공하는 당신은 더 많은 정보에 대해 이벤트입니다.

도 필요하지 않은 경우 인수하는 이벤트는 경우에,당신은 포함하지 않으로 그들의 첫 번째 실행 framework 추가하고 싶은 나중에,당신은 휴식의 모든 이전 구현,그리고 다시 쓰기.플러스 당신이 만드는 프레임워크 및 배포하는것이 나빠지기 때문에 모두가 사용하는 프레임워크가 필요한 리팩터링.

크리스에서 말한 프레임워크인 지침 책:

[T]그는 단지에 대한 패턴이다.함으로써 이벤트 arguments 포장 클래스에서 당신은 더 나은 버전 관리는 의미입니다.함으로써 일반적인 패턴 (sender, e) 그것은 쉽게 배웠으로 서명을 모든 이벤트에 대한.

있는 상황이 대부분을 포함하 interop 는 것이 필요한 편차에서 이런 경향을 갖고 있습니다.

그것 보다는 것이었 Microsoft 의 방법으로 진화하고 이벤트 모니다.그것은 또한 그들은 또한 허용하는 다른 방법으로"새로운"활동에 위임하고 그것의 변형이 있습니다.

"객체를 보낸 사람이"다시 사용할 수 있습 방법 중 하나는 여러 개체에 대한 때 처리기는 방법은 뭔가를 해야 하 개체 발생 이벤트,예를 들어 3 입 있을 수 있는 하나의 처리기는 것이 다시 설정 텍스트의 텍스트 상자.

후 호출의 주요 장점은 그것을 할 수 있습 리팩터링 이벤트 정보를 변경할 필요없이 서명을 모두의 처리기에 있는 모든 프로젝트에 등록된 종류의 이벤트입니다.

나는 생각할 수 없는 방법을 다루는 이벤트입니다.

때때로 당신은 좋아하는 힘은 모든 이벤트는 소비자가 사용하는 특정 이벤트 매개 변수는,예를 들어,보안 이벤트를 통과하는 boolean 매개 변수는,사실에 대한 좋은 거짓에 대한 나쁜.이 경우에 당신은 당신의 소비자에게 고통스럽게 알고 있는 새로운 매개 변수,즉당신이 원하는 소비자와 결합하는 매개 변수입니다.을 참고 소비자들은 여전히 분리되어서는 이벤트 사격 클래스지에서 당신의 이벤트입니다.

내가 심는 이나리오에 적용되는 많은 수의 경우 및 이러한 경우의 값시키려면 다음이 크게 감소됩니다.

시키려면 다음 클래스 홀은 쓸모가 없기 때문이어야 합 파생화와 함께 있다는 점에 유의하십시오.이를 나타내는 것입 하위 사용해야,그리고 많은 사람들이 이미 존재합니다.NET.슬프게도,나를 찾을 수 없는 좋은 일반적인 것들입니다.

당신에게 위임하려고 합니다 기록하는 일반적인 이벤트...쓰지 않고 자신시키려면 다음 서브 클래스.보일 수 있는 무의미한 운동,하지만 나를 사용하여 같은 기존의 특징이다.전달할 수 있습니다 당신의 문자열을 통해 개체 인수,하지만 그에 대하여 간의 수도 있습니다.을 찾으려고 좋은 참조시키려면 다음의 서브 클래스에서 구글,그리고 당신은 올 건조합니다.(적어도 했습니다.)

---끝---이력서 조금 도움이기 때문을 입력할 때"시키려면 다음"당신 목록을 참조하십시오의 모든 클래스(이내에 당신을 사용하여/수입품 범위)문자열이 포함된"시키려면 다음".Perusing 목록을 볼 수 많은 클래스를 가진 어떤 문자열을 회원입니다.을 얻을 때 당신 ControlEventArgs, 당신이 볼,텍스트 속성을 사용할 수 있지만,모두의 오버헤드의 윈도우 제어합니다. ConvertEventArgs 유용할 수 있습니다,당신이 통과 유형,데이터와 함께 하지만 이것은 여전히 필요합 커플링의 기록이 잘되나 본래 유형-안전합니다. DataReceivedEventArgs 가 없 구현합니다. EntryWrittenEventArgs 필요 EventLogEntry 바이트 배열로 또는 StreamingContext 를 위한 데이터이다. ErrorEventArgs 가까운로,예외 메시지가 표시되지 않는 경우,마음 호출의 모든 이벤트 로그는 예외 ErrorEvents 내부적으로 합니다. FileSystemEventArgs 은 아마도 가장 가까운 아직으로,두 문자열과 필요한 WatcherChangeTypes enum 인수할 수 있는 0 으로 설정 알고 있는 경우에,당신이 무엇을하고있다. LabelEditEventArgs 사용 int,string,지 않는 경우에 마음을 요구하는 Windows.폼페이스입니다. RenamedEventArgs 비슷한 FileSystemEventArgs 께 문자열입니다.마지막으로, ResolveEventArgs 에서는 시스템입니다.런타임입니다.InteropServices 전달 하나의 문자열입니다.거기 다른 라이브러리는,그러나 내가 붙어있는 가장 일반적인 것들입니다.그래서,구현에 따라 사용할 수 있는 ErrorEventArgs, FileSystemEventArgsResolveEventArgs 기록합니다.

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