class Program
{
static void Main(string[] args)
{
Notifier notifier = new Notifier();
EventListener listener1 = new EventListener("Listener1");
EventListener listener2 = new EventListener("Listener2");
EventListener listener3 = new EventListener("Listener3");
// 체인 만들기
notifier.EventOccured += listener1.SomethingHappend;
notifier.EventOccured += listener2.SomethingHappend;
notifier.EventOccured += listener3.SomethingHappend;
notifier.EventOccured("You've got mail");
Console.WriteLine();
// 체인 끊기
notifier.EventOccured -= listener2.SomethingHappend;
notifier.EventOccured("Download complete");
Console.WriteLine();
Notify notify1 = new Notify(listener1.SomethingHappend);
Notify notify2 = new Notify(listener2.SomethingHappend);
notifier.EventOccured = (Notify)Delegate.Combine(notify1, notify2);
notifier.EventOccured("fire!!");
Console.WriteLine();
notifier.EventOccured = (Notify)Delegate.Remove(notifier.EventOccured, notify2);
notifier.EventOccured("RPG!");
}
}
delegate void Notify(string message);
class Notifier
{
public Notify EventOccured;
}
class EventListener
{
private string name;
public EventListener(string name)
{
this.name = name;
}
public void SomethingHappend(string message)
{
Console.WriteLine($"{name}.SomethigHappened : {message}");
}
}
728x90
'C#' 카테고리의 다른 글
C# / 대리자 실습 - Delegate / 익명 메소드로 버블 정렬 구현 (0) | 2022.08.10 |
---|---|
C# / 대리자 실습 - Delegate / 익명 메소드 구현 (0) | 2022.08.10 |
C# / 대리자 실습 - Delegate / 정렬 메소드 구현 추가IComparable<T> 사용 (0) | 2022.08.10 |
C# / 대리자 실습 - Delegate / 버블 정렬을 위한 대리자 (0) | 2022.08.10 |
C# / 대리자 실습 - Delegate / 덧셈 뺄셈을 위한 대리자 (0) | 2022.08.10 |
댓글