의 호출에 따라 이벤트를 설정하는 것입니다 I라는 기능을 가지고 말. AFun()
가 호출 될 때마다, 그것은 가능한 기능
void AnEvent()
{
//body
}
그리고 AnEvent()
는 항상 호출됩니다, 말.
의 호출에 따라 이벤트를 설정하는 것입니다 I라는 기능을 가지고 말. AFun()
가 호출 될 때마다, 그것은 가능한 기능
void AnEvent()
{
//body
}
그리고 AnEvent()
는 항상 호출됩니다, 말.
그렇습니다.하지만 간접적으로 AFun에서 이벤트를 내 보내면 AnEvent는 해당 이벤트를 듣고 원하는 것을 얻을 수 있습니다. 그렇지 않으면 직접 지원되지 않습니다 무엇을 설명
코드 샘플 :
public delegate void EventHandler();
public event EventHandler ev;
public void AFun
{
...do stuff
ev(); //emit
}
//somewhere in the ctor
ev += MyEventHandler;
//finally
void MyEventHandler
{
//handle the event
}
쉬운 방법 :
event EventHandler AnEventHappened;
void AFun()
{
OnAnEvent();
}
void AnEvent()
{
}
void OnAnEvent()
{
var tmp = AnEventHappened;
if(tmp != null) tmp(this, EventArgs.Empty);
}
그건 컴파일되지 않습니까? ("EventHandler에서 Boolean으로 변환 할 수 없다"라는 메시지가 나오면 실패 할 것입니다.) –
@Fred : 미안 - 너무 많은 자바 스크립트. null을 테스트하는 것. –
AFun()을 수정하지 않고도 완료 할 수 있습니까? –
하드 방법 :
성처럼 뭔가사용 관점 지향 프로그래밍 (Aspect Oriented Programming, 또는 PostSharp)를 선택하고 그런 식으로 이벤트를 내 보냅니다.
당신이 쓰는대로. 당신이 말하는 것은 "Aspect-Oriented Programming"(AOP)이며 컴파일러 지원이 필요합니다.
이제 코드의 올바른 위치에 리스너와 이벤트를 삽입하여 AOP를 수행하는 C# 및 .NET에 대한 확장이 있습니다.
오프 トピック : JavaScript에서이 작업을 수행 할 수 있습니다.
코드 스 니펫이나 리소스를 설정하는 방법에 대한 예를 제공해주세요. –
@Gunner, 이벤트를 선언하고 이벤트를 제기하고 듣는 것은 초보적인 C#/.NET입니다. C#에서 가장 좋아하는 입문서를 참조하십시오. –
@Gunner : OK, 일부 코드를 제공했습니다. –