P.K*_*P.K 6 c# system.reactive reactive-extensions-js c#-4.0
我有一个可观察的集合,我想继续喂养对象,即使有人订阅了它,它们也应该到达观察者(哪个是可观察的主要目标).我该怎么做?
在以下程序中,在订阅发生之后,我想要输入3个以下的数字,这些数字应该到达观察者.我该怎么做呢?
我不想通过实现IObservable<int>和使用Publish方法来实现我自己的Observable类的路径?有没有其他方法来实现这一目标?
public class Program
{
static void Main(string[] args)
{
var collection = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var observableCollection = collection.ToObservable();
observableCollection.Subscribe(OnNext);
//now I want to add 100, 101, 102 which should reach my observers
//I know this wont' work
collection.Add(100);
collection.Add(101);
collection.Add(102);
Console.ReadLine();
}
private static void OnNext(double i)
{
Console.WriteLine("OnNext - {0}", i);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我要做的:
var subject = new Subject<double>();
var collection = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var observableCollection = collection
.ToObservable()
.Concat(subject); //at the end of the original collection, add the subject
observableCollection.Subscribe(OnNext);
//now I want to add 100, 101, 102 which should reach my observers
subject.OnNext(100);
subject.OnNext(101);
subject.OnNext(102);
Run Code Online (Sandbox Code Playgroud)
一般来说,如果你可以观察到无论是生产额外的输入,你会希望Concat的是可观察的,而不是强制性地推动这些值转换为主题,但有时这是不实际的.