Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 行为主体<;T>;作为后盾?_C#_System.reactive_Rx.net - Fatal编程技术网

C# 行为主体<;T>;作为后盾?

C# 行为主体<;T>;作为后盾?,c#,system.reactive,rx.net,C#,System.reactive,Rx.net,下面是这样说的: 行为子对象通常与类属性相关联。因为它们总是有一个值,并且可以提供更改通知,所以它们可以作为属性的备用字段 然而,我找不到一个明确的例子来说明如何做到这一点 如果我理解正确的话,建议这样做: private BehaviorSubject<int> _myNumber = new BehaviorSubject<int>(0); public int MyNumber { get { return _myNumber.Value; } // opt

下面是这样说的:

行为子对象通常与类属性相关联。因为它们总是有一个值,并且可以提供更改通知,所以它们可以作为属性的备用字段

然而,我找不到一个明确的例子来说明如何做到这一点

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

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(); }
}
private BehaviorSubject\u myNumber=new BehaviorSubject(0);
公共整数MyNumber
{
获取{return\u myNumber.Value;}//可选
设置{u myNumber.OnNext(值);}
}
公共IObservable MyNumber
{
获取{return _myNumber.AsObservable();}
}
关于这一点,我有几个问题:

  • 这是否真的是我们所建议的
  • 这个模式有一个通用的名字吗?我可以用谷歌搜索一下吗?因为我不知道该怎么称呼它,所以我的搜索结果很差
  • 这是否被视为良好做法?或者有没有更好的方法来做同样的事情(即创建一个可观察的领域)
  • 你认为这个命名约定是什么

我一直认为它是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 => { });