1
2
3
4
5
6 using System;
7 using System.Collections;
8 using System.Windows.API;
9 using System.Concepts;
10
11 namespace System.Windows
12 {
13 public class EmptyEventArgs
14 {
15 }
16
17 public class Event<Handler, Args = EmptyEventArgs>
18 {
19 public Event()
20 {
21 }
22 public ~Event()
23 {
24 }
25 public void AddHandler(Handler handler)
26 {
27 if (Find(handlers.CBegin(), handlers.CEnd(), handler) == handlers.CEnd())
28 {
29 handlers.Add(handler);
30 }
31 }
32 public void RemoveHandler(Handler handler)
33 {
34 handlers.Remove(handler);
35 }
36 public const List<Handler>& Handlers() const
37 {
38 return handlers;
39 }
40 public void Fire() where Args is EmptyEventArgs
41 {
42 for (Handler handler : handlers)
43 {
44 handler();
45 }
46 }
47 public void Fire(Args& args)
48 {
49 for (Handler handler : handlers)
50 {
51 handler(args);
52 }
53 }
54 private List<Handler> handlers;
55 }