는 C#으로 다른 클래스를 속하는 이벤트를 트리거하기 위해 어떻게 든 가능인가요 obj.onTesting.Invoke();통화 이벤트 명시 적으로
답변
아니요 다른 클래스에서 직접 호출 할 수 없습니다. 그것이 사건의 핵심입니다 (캡슐화).
당신은 방금 event
키워드를 제거, 그것은 당신이했던 방법을 호출하고 대리자를 사용해야하는 경우 다음 대신
class Main
{
public static void Main()
{
foo obj = new foo();
...
obj.RaiseEvent();
}
}
RaiseEvent
메소드를 호출 도우미 메서드
class foo
{
public delegate void myEvntHandler();
public event myEvntHandler onTesting;
public void RaiseEvent()
{
if(onTesting !=null)
onTesting();
}
}
이 필요합니다. 당신이 그렇게하지 못하도록 막지는 않습니다. (권장하지 않습니다)
처음에는 이벤트. – Servy
@Servy'RaiseEvent' 메소드가 이벤트를 발생시키는 것 외에는 아무것도하지 않는다면 나는 당신에게 동의한다. 그것이 부작용을 일으키고 사건을 일으킨다면 그것은 목적의 IMO를 이길 수 없습니다. –
물론, 요점은 * 다른 일을 할 때 * 이벤트가 발생했을 때입니다. 당신은 단순히 사건을 해고하는 것이 아니라, 어떤 행동을 취할 때 그 행동이 일어 났을 때 그 사건은 해고됩니다. 어떤 멤버가 호출 된 결과 거의 모든 사건이 해고되었습니다. 요점은 단지 그렇게하는 것이 아니라는 것입니다. – Servy
아니요. 이벤트의 목적은 이벤트 핸들러를 추가/제거하는 것 이외의 모든 액세스를 명시 적으로 금지하면서 델리게이트를 래핑하는 것입니다. event
키워드는 특별히 이벤트를 선언 한 클래스 이외의 클래스를 호출하지 못하도록합니다.
짧은 답변 : 제
긴 답 : 거기에 후드 실제 개체 대표와는 달리 "이벤트"같은 것은 아래. 이벤트는 핸들러를 추가 및 제거하는 두 가지 메소드와 전용hidden myEvntHandler 필드의 편의를위한 것입니다.
논리적으로 클래스 외부의 이벤트를 발생시키는 것은 의미가 없습니다. 이벤트의 전체적인 포인트는 클래스가 트리거를 감지했을 때 클래스에 의해 발생된다는 것입니다.
당신은 단지 그 다음 갈 수있는 올바른 방법을 핸들러를 추가했습니다 다른 클래스를 테스트하기 위해 이벤트를 발생하려면
입니다에 :- 이동
- 가 구현하는 인터페이스에 이벤트 인터페이스를 구현하고 "RaiseEvent"메소드를 추가하는 테스트 클래스를 생성하십시오.
- 는 테스트 대상 장치에 인터페이스를 주입
- 1. 명시 적으로
- 2. 명시 적으로
- 3. 명시 적으로
- 4. Swift가 명시 적으로 Float에 명시 적으로 캐스팅해야하는 이유
- 5. 명시 적으로 모든 종속성을 명시 적으로 참조하지 않고 계단식 삭제
- 6. 명시 적으로 인터페이스 정의
- 7. 방법은 명시 적으로
- 8. AppEngine '명시 적으로 취소됨'오류
- 9. 명시 적으로 Catalyst에서보기 호출
- 10. 기능이 명시 적으로
- 11. 명시 적으로 테이블
- 12. 명시 적으로 소멸자를 호출해야합니다.
- 13. C++ 명시 적으로 생성자와
- 14. DatabaseInitializer를 명시 적으로 호출
- 15. DataTable을 명시 적으로 처리해야합니까?
- 16. 명시 적으로 생성자 :: runtime_error
- 17. 명시 적으로 스레드를 완료하여
- 18. 명시 적으로 메모리를 확보하십시오.
- 19. metdataStore를 명시 적으로 검색합니다.
- 20. 구조 지정 명시 적으로
- 21. 명시 적으로 서비스 중지
- 22. 바인딩 모델을 명시 적으로
- 23. 트리거를 명시 적으로 호출하십시오.
- 24. 명시 적으로 SVN
- 25. 명시 적으로 NpgsqlParameters를 처리하십시오.
- 26. 변수를 명시 적으로 또는 암시 적으로 입력해야합니까?
- 27. 같은 이름의보기 도우미를 명시 적으로 해결하는 레일
- 28. 이벤트 처리기가 명시 적으로 호출되지는 않지만 eventemitter가 실행되는 이유
- 29. 어떻게 명시 적으로 ItemsCollection.Filter를 호출합니까?
- 30. document.domain이 명시 적으로 설정되었는지 테스트
당신은 ** 이벤트 만의 왼쪽에 나타날 수 있습니다 얻을 + = 또는 - = **이 사용하는 전체 목적을 패배 물론 오류 – Kowalski