我可以在MonoTouch项目中使用Reactive Extensions吗?

时间:2012-11-19 21:01:07

标签: c# .net xamarin.ios system.reactive xamarin

有一个名为mono-reactive的Rx端口包含一个MonoTouch项目,但是作者announced ten days ago他放弃了该项目,转而使用Microsoft开源实现:

  

我高兴地宣布,我不再继续使用此代码库了   现在微软已经在Apache许可证中开源了Reactive Extensions。   http://rx.codeplex.com/

MonoDevelop挂起试图在Rx master中打开Rx.sln并且无论如何都没有MonoTouch目标。 PCL support is not there yet for MonoTouch too

我想知道是否有人已经为Rx提供了一个兼容MonoTouch的项目,以及它是否真的可用于生产。

1 个答案:

答案 0 :(得分:8)

Microsoft Rx

我自己设置了一个项目,结合了来自{{3的核心接口 Linq PlatformServices }}。
你去了:

<强> Rx's codeplex

它适用于引用类型,更不用说值类型(见下文) 不幸的是由于bug https://github.com/stampsy/rx-monotouch 8329而无法编译。现在编译得很好。

单反应性

我也使用了9087,它对我来说效果很好。虽然微软的实现看起来更简洁可靠,但单反应更小,更容易在真正需要时修复。

您可以尝试两种方式,看看哪种方式最适合您 快乐观察!

缓解崩溃

对于这两个框架,我经常遇到由AOT引起的崩溃 设备的限制。 Xamarin的Rolf告诉我你可以 通常通过不使用值类型来解决大多数AOT限制 Rx泛型类型参数。

例如,IObservable<bool>扩展名可能会在设备上崩溃,IObservable<long>也会崩溃,但参考类型应该适用于大多数方法。

mono-reactive中,我添加了IntervalSafe方法,该方法返回Unit(我将其更改为引用类型,而不是结构)而不是long,因此不会在整个代码库中造成数十次崩溃。

某些Rx方法仍然崩溃,但修复这些崩溃非常容易

通过Costo或my version of Rx查看Throttle fix以供参考 我很乐意合并解决其他Rx方法及其重载的拉取请求。