문제

내 코드는 뒤에 나는 와이어 내 이벤트는 다음과 같이

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    btnUpdateUser.Click += btnUpateUserClick;
}

나는 그것을 이 방법은 무엇 때문에 본서는 예입니다.

  • 지 않습니다.OnInit()메소드는 호출될 필요가?
  • 이 그것을 암시적으로 할 수 있을까?
  • 그것이 더 좋은 전화를 처음에 그것의 방법이나 끝?
  • 예를 들자면 곳에 혼란의 기본 방법은 당신을 얻을 수 있나요?
도움이 되었습니까?

해결책

난 명확히:

이 지침하는 것이 좋습을 발사하는 이벤트를 포함해야 호출하면 가상"에EventName"는 방법이지만,그들은 또한 말을 하는 경우에는 파생 클래스를 재정의하는 방법을 잊어버리고 전화하는 기본방법은,이벤트도 불.

보"중요 사항에 대해"반쯤 이 페이지:

파생되는 클래스를 재정을 보호하는 방법을 호출하지 않는 기본 클래스 구현합니다.기본 클래스에 계속해야 제대로 작동하는 경우에도 그 구현되지 않았다.

다른 팁

이 경우에 전화하지 않으면 기본 OnInit,다음 Init 도 발생하지 않습니다.

일반적으로,그것은 최고의 연습을 항상 통화 기본 방지 않는 한,당신은 특히 알고 있는 당신을 원하지 않는 기본 행동 발생할 수 있습니다.

의 여부를 불에서 시작하거나 끝에 따라 달라지는 어떻게 당신이 원하는 것이 작동합니다.이 같은 경우에,당신이 사용하는 재정의를 대신에의 연결 이벤트 처리기 호출,그것은에서의 시작은 방법은 더 의미가 있습니다.는 방법은,당신의 코드를 실행한 후에 핸들러를 만드는,그것은 더 많은 에뮬레이트"정상"이벤트 처리기입니다.

식을 가지고 프레임워크 디자인이 그렇지 않으면,대부분의 클래스 디자이너들이 실제로 OnXxx()메소드에 대한 책임이 발사 실제 이벤트에,다음과 같다:

protected virtual void OnClick(EventArgs e)
{
    if (Click != null) Click(this, e);
}

...그래서 만약 당신을 상속하는 클래스에서 호출하지 않 기초입니다.OnClick(e),클릭 이벤트 결코.

그래서 그래도 이 경우에 따라 공식적인 디자인 지침에,내가 가치가 있다고 생각화 기초입니다.OnInit(e)그냥 확인 할 수 있습니다.

공식 design guidelines 그렇지 않으면 추천

그들은 무엇입니까?지 궁금하기도 해요 난 항상 생각을 반대하고,읽 Framework 디자인 가이드라인과 실행 FxCop 은 시멘트가 발라진됩니다.미국에서는 이벤트를 항상에서 발사 가상 OnXxx()메소드는 가시키려면 다음 매개변수

당신은 아마 더 나은 그 일을 하는 방법으로,이 논쟁이 사라집니다.이 문서는 재미있지만,특히 고려하는 것.NET Framework 지 않는 이 지침이다.

@Ch00k 및@스콧 난 몰라-나에EventName 패턴 자신입니다.그래,내가 한 사람의 죄를 발사하는 이벤트에서는 방법입니다.

나는 생각한 재정*메서드를 호출하는 기준 중 하나입니다.취급 자신의 이벤트는 잘못된 것 같습니다.

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