4

Intro to Rx中说:

BehaviorSubjects 通常与类属性相关联。由于它们始终具有值并且可以提供更改通知,因此它们可以成为属性支持字段的候选者。

但是我真的找不到一个明确的例子来说明如何做到这一点。

如果我理解正确,建议这样做:

private BehaviorSubject<int> _myNumber = new BehaviorSubject<int>(0);
public int MyNumber
{
    get { return _myNumber.Value; } // optional
    set { _myNumber.OnNext(value); }
}
public IObservable MyNumbers
{
    get { return _myNumber.AsObservable(); }
}

我对此有几个问题:

  • 这确实是提议的内容吗?
  • 这种模式是否有一个通用名称,我可以进一步谷歌吗?因为我不知道该怎么称呼它,所以我的搜索结果很短。
  • 这被认为是好的做法吗?还是有更好的方法来做同样的事情(即创建一个可观察的领域)?
  • 你会建议什么命名约定?
4

1 回答 1

1

我一直认为它是 的可观察版本INotifyPropertyChanged,如:

private BehaviorSubject<int> _myNumberChanged = new BehaviorSubject<int>(0);
private int _myNumber;
public int MyNumber
{
    get => _myNumber;
    set
    {
        if (_myNumber == value)
        {
            return;
        }

        _myNumber = value;
        _myNumberChanged.OnNext(_myNumber);
    }
}

接着:

var subscription = _myNumberChanged.Subscribe(i => { });
于 2018-01-19T16:43:58.427 回答