gpt4 book ai didi

c# - 如何更改 IObservable 的值?

转载 作者:行者123 更新时间:2023-11-30 23:07:19 24 4
gpt4 key购买 nike

我是 RX 的新手,现在我正在尝试做简单的事情 - 只是为 IObservable 设置一个新值(在我的例子中 T 是 double )。怎么做?

   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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com