我一直在試圖理解的Rx更深入,按照巴特德Smetts MinLinq和Jon長柄水杓「重新實現」系列,我建立了一個很好的理解,但...IObservable的Where()擴展方法是如何實現的?
以下列代碼爲例
var onePerSecond = Observable.Interval(TimeSpan.FromSeconds(1));
var evenNums = onePerSecond.Where(x => x % 2 == 0);
evenNums.Subscribe(Console.WriteLine);
從equivelant 的IEnumerable的觀點我理解的MoveNext /當前的數據流,並從長柄水杓先生的博客如何Where方法可以使用的foreach超過了IEnumerable實現‘這個’延長參數方法。
但是,在IObservable的Where方法的情況下,它是否會包含實現IObserver接口(或lambda equivelant)的代碼,因此會有效地觀察來自onePerSecond對象的所有通知,然後返回僅包含值的IObservable謂詞被發現是真實的?
任何幫助和想法非常歡迎,非常感謝
詹姆斯
嗨Giorgi的,非常感謝,那太棒了!我應該想到:-)感謝您的幫助。詹姆斯 – jameschinnock 2012-04-04 07:36:15
如果我建立這個,我得到構建錯誤''System.Reactive.AnonymousObservable'由於其保護級別是不可訪問的' –
2012-05-28 10:51:43
AnonymousObservable是反應擴展的內部,但有一個公共方法Observable.Create,可以讓您觀察類似,https://gist.github.com/2819921 – 2012-05-28 16:36:36