Темы против публикации - PullRequest
       22

Темы против публикации

1 голос
/ 14 февраля 2012

Я играл с Rx в течение последнего дня или около того, и одна вещь, которая все еще не имеет для меня смысла, это Субъект.

Когда бы я использовал этот класс напрямую?

Мне кажется, что я бы с большей вероятностью предоставил IObservable и использовал метод Publish для создания IConnectableObservable.Затем у меня есть возможность использовать RefCount для преобразования обратно в IObservable, который отслеживает его подписчика.

Я уверен, что здесь что-то упущено.Если у вас есть понимание, я буду признателен.

Спасибо

Ответы [ 3 ]

1 голос
/ 02 марта 2012

Я также новичок в Rx, но я использовал их для классов, которые имеют горячие наблюдаемые.то есть.

class NumberMonitor
{
  Subject<double> _source = new Subject<double>();
  public IObservable<double> NumberStream {get {return _source.AsObservable; } }

  void OnSomeEvent(object sender, EventArgs e)
  {
    _source.OnNext(1);
  }
}
1 голос
/ 15 февраля 2012

Вы правы в том, что подвергание субъекта напрямую вряд ли будет тем, что вы хотите. Как правило, вы должны использовать Subject внутри и представлять его как IObservable. Один из примеров того, когда вы могли бы сделать это в этом вопросе .

0 голосов
/ 15 февраля 2012

Я использовал AsyncSubject для каких-то внутренних флагов завершения в классе ViewModel как быстрое исправление, я бы сказал, что они выглядят намного чище, чем выполнение Observable.Create.

...