我是RX的新手,现在我正在尝试做一件简单的事情-只是为IObservable设置一个新值(在我的情况下,T是两倍)。怎么做?
public IObservable<double> TEST
{
get { return _test.NeededValue; }
set { _test.NeededValue = value; } // I have add this, in order to change needed value
}
...
myObj.TEST = 0.1; // error 'Cannot convert double to System.IObservable<double>
最佳答案
这几乎是获得可观察值以产生值的最简单方法:
Subject<double> subject = new Subject<double>();
IObservable<double> observable = subject.AsObservable();
observable.Subscribe(x => Console.WriteLine(x));
subject.OnNext(42);
这将输出
42
到控制台。我已经包含了
IObservable<double> observable = subject.AsObservable();
行以显示您应该做什么,但是由于Subject<T>
也是IObservable<T>
您实际上可以执行以下操作:Subject<double> subject = new Subject<double>();
subject.Subscribe(x => Console.WriteLine(x));
subject.OnNext(42);
现在,这并不过分有趣。
这可能更符合您的需求:
void Main()
{
var foo = new Foo();
foo.Bars.Subscribe(x => Console.WriteLine(x));
foo.OnBar(42);
}
public class Foo
{
public event EventHandler<double> Bar;
public void OnBar(double value)
{
this.Bar?.Invoke(this, value);
}
public IObservable<double> Bars
{
get
{
return
Observable
.FromEventPattern<EventHandler<double>, double>(
h => this.Bar += h,
h => this.Bar -=h)
.Select(x => x.EventArgs);
}
}
}
此代码还将
42
打印到控制台。关于c# - 如何更改IObservable <double>的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47450764/