class TYTD.Event { private _events = []; public operator+(e) { if (!_events.Contains(e)) { this._events.Add(e); } return this; } public operator-(e) { this._events.Remove(e); return this; } public Invoke($$args) { each(var e : this._events) { e.Call(args); } } }