我怀疑我对反应式扩展的理解是不正确的,但我认为它们可以用来订阅对集合的方法调用。我在想一个典型的dotnet事件处理程序。我的最终目标是在集合被修改时触发一个方法调用。
我有以下小的控制台应用程序示例,正如您在注释中所看到的,我期望它重新打印结果,或者至少在将其添加到集合中时重新打印最后的结果。我还尝试了query.ToList(),看看重新运行查询是否会再次打印出结果。
static void Main(string[] args)
{
// we have some data that is an IEnumerable It's lazy so we can query it.
IEnumerable<int> data = new List<int>();
for (int i = 0; i < 10; i++)
{
(data as List<int>).Add(i);
}
// create a linq query
var query = from number in data select number;
// create observable
IObservable<int> observableQuery = query.ToObservable<int>(Scheduler.Default);
observableQuery.Subscribe(Console.WriteLine);
/// the numbers get printed here 1.. 9
Console.ReadKey();
(data as List<int>).Add(1000);
var l = query.ToList();
var j = observableQuery.ToList();
// the numbers don't get reprinted here... ? Shouldn't they reprint when the collection is modified?
Console.ReadKey();
}发布于 2017-03-14 17:13:31
Rx不是用来监控集合中的状态变化的。ToObservable方法只是使用您调用它的时间点的集合内容生成一个新的可观察流。
如果你想在集合上使用Rx运算符,可以看看DynamicData project。
https://stackoverflow.com/questions/42746549
复制相似问题