/// <summary> /// Subject에 바인딩된 Listener를 해제합니다 /// </summary> public static void UnbindListener <T>(IListenerObserver <T> listener) where T : ListenerSubject { var subject = _subjects.First(sub => sub.GetType() == typeof(T)); if (subject != null) { subject.Remove(listener); } }
/// <summary> /// Subject에 Listener를 바인딩합니다 /// </summary> /// <exception cref="ArgumentException"></exception> public static void BindListener <T>(IListenerObserver <T> listener) where T : ListenerSubject { var subject = _subjects.First(sub => sub.GetType() == typeof(T)); if (subject != null) { subject.Add(listener); } else { throw new ArgumentException("Couldn't bind listener, because subject is not added"); } }
/// <summary> /// Listener를 제거합니다. /// </summary> public virtual void Remove(IListenerObserver <ListenerSubject> sender) { _listeners.Remove(sender); }
/// <summary> /// Listener를 추가합니다. /// </summary> public virtual void Add(IListenerObserver <ListenerSubject> sender) { _listeners.Add(sender); }