public void Detach(BaseObserver <TState> observer)
 {
     if (_observers.Contains(observer))
     {
         _observers.Remove(observer);
     }
 }
 public void Attach(BaseObserver <TState> observer)
 {
     if (!_observers.Contains(observer))
     {
         _observers.Add(observer);
     }
 }