User
У CompositeDisposable есть метод Clear, который как раз делает то, что вам надо - у всех IDisposable вызовет Dispose, затем почистит список, но при этом _disposed не выставит в true. Т.е. можете переиспользовать его сколько угодно раз.
Небольшая подсказка. Вместо
private List<IDisposable> _disposables = new List<IDisposable>();
можно использовать класс CompositeDisposable для простоты. Будет что-то типа
private CompositeDisposable _disposables = new CompositeDisposable(); public void Init(Player player) { player.Health //создаем подписку .Subscribe(v => { _healthView.text = v.ToString(); }) //добавляем подпику в список очищаемых обьектов .AddTo(_disposables); player.Mana.Subscribe(v => { _manaView.text = v.ToString(); }).AddTo(_disposables); } public void Dispose() { _disposables.Dispose(); }
У CompositeDisposable есть метод Clear, который как раз делает то, что вам надо - у всех IDisposable вызовет Dispose, затем почистит список, но при этом _disposed не выставит в true. Т.е. можете переиспользовать его сколько угодно раз.
Небольшая подсказка. Вместо
можно использовать класс CompositeDisposable для простоты. Будет что-то типа