System.Reactive.Joins指南

我正在寻找System.Reactive.Joins的介绍/一些文档,其中包括Pattern,Plan,QueryablePattern和QueryablePlan类。 谷歌没有发现任何东西(“System.Reactive.Joins”),MSDN什么都没有,这里没有样本, 这个问题的优秀资源不包括这个命名空间。

有人有指点吗?

找到一个很好的SO问题来显示用法,但对我来说,Plan和Pattern的总体目的是创建一个可观察的组合单元而不是组合的可观察对象。 语义,我知道,但对我来说,使用这种语法然后使用各种其他“加入”方法似乎更容易一些。 它允许您将连接与投影完全分开,因此您可以存储中间计划并随时使用其他可观察对象进行组合。

例如:

// Suppose we have observables o1, o2, ..., o9. All IObservable. var o1and2 = o1.And(o2); // Store this bad boy for later use. Pattern var o5and6and9 = o5.And(o6).And(o9).Then((t1,t2,t3) => t1+t2+t3); // Plan var o3and7 = o3.And(o7).Then((t1,t2) => string.Format("Result: {0}", t1+t2)); // Plan var o12ando8and6 = o1and2.And(o8).And(o6).Then((t1,t2,t3,t4) => new Tuple((decimal)t1, t2, t3.ToString(), t4)); // Plan> // When similar results together. This will fire when any of the Patterns give a result. var firstObserve = Observable.When(o1and2.Then((t1,t2) => t1+t2), o5and6and9); // IObservable var secondObserve = Observable.When(o3and7); // IObservable var thirdObserve = Observable.When(o12ando8and6); // IObservable> 

SO文章: .NET的react native扩展(Rx):完成所有事件后立即采取行动

另外,找到了一个实际上有助于理解如何使用它的RX文档:

http://www.clipcode.net/mentoring/RxReferenceLibrary.pdf

这是我发现的唯一一件事: 在Rx中加入模式 。 我还想看到有关这些主题的其他资源。

.NET的react native扩展(Rx) blogs.msdn.com

…然后等待三个结果中的前两个使用连接模式返回。

如何连接多个IObservable序列? stackoverflow.com

如何在v.2838中使用新的Join运算符…

JavaScript的Reactive Extensions简介 – 新版本和加入weblogs.asp.net

… JavaScript的Reactive Extensions,其中包括我最近一直在讨论的许多变化,包括第三方库集成,我在之前的post中介绍的聚合,以及今天发布的主题的连接。

System.Reactive.Joins命名空间msdn.microsoft.com

Microsoft对System.Reactive.Joins命名空间的定义。

除了我在这里提到的例子(现在更新为使用Observable.When而不是Observable.Join),对我的一般概念似乎是当你想要自己组合事件时你使用When和join模式,而不是事件的内容。 所以,当我想做一些与被观察数据相关的事情时,我会使用其他查询运算符,比如SelectMany。 当我想做一些纯粹的事情来回应哪些事件,以及哪些事件模式按特定顺序触发时,那么我会使用连接模式。 现在,这并不是说你不能将其他查询运算符组合起来,比如,Where和Select来过滤和从IObservable中输出一些值,这些值稍后将用于连接模式,但我认为这是一个很好的通用方法看看它。

我确实尝试过一些例子,但我还没有真正想出更好的东西……只是更复杂的相同概念。 您希望对相关事件模式进行分组,这些事件模式可能具有在事件级别而非IObservable内容中有意义的复杂关系。

使用Reflector(或类似工具)并不是一个坏主意,
目前,浏览源代码对于Rx来说是非常宝贵的工具。 您可以看到它实现了什么,如何 – 并与其他标准Rx模式进行比较。
此外,也许你可以发布一个问题,你想要解决的问题 – 然后去那里(其他人可能有更多的想法)。
编辑: Rx没有源代码。 然而,即使Rx人员建议使用Reflector或类似工具拆解它来分析库。 例如,您可以免费使用ILSpy,下载Rx-Providers Nuget,或者您有我想的,将System.Reactive.Providers.dll和System.Reactive.dll加载到其中并享受:)。 它不是完美的,也不是官方的,也不是至少容易编译的 – 但是你可以很好地理解它是如何工作的,它帮助了我很多, 非常宝贵!