2011-06-09 107 views
6

我是.NET新手,我以前的工作是PLC程序員。我有一箇舊應用程序,我使用了Reactive Extension for .NET。Reactive Extension - 新版本舊版本的問題使用方法

我不會很長時間保持這個應用程序。現在我下載了Reactive Extension的新版本,但是我在使用舊代碼時遇到了問題。

我知道Rx中的某些部分發生了變化。

這裏有一個問題,舊的代碼:

Observable.FromEvent<PropertyChangedEventArgs>(this, "PropertyChanged") 
    .Where(e => e.EventArgs.PropertyName == "Nick") 
    .Select(_ => this.Nick) 
    .Where(text => text.Length > 3) 
    .Do(LoadUser) 
    .Throttle(TimeSpan.FromSeconds(3000)) 
    .Subscribe(LoadUser); 

我得到這個異常:

Error 3 Argument 1: cannot convert from 'Spirit.ViewModels.AddFriendViewModel' to 'System.Action<System.Action<System.ComponentModel.PropertyChangedEventArgs>>' E:\C#_Projects\Pokec_Messenger\Spirit_Caliburn_Micro_v1.0\ViewModels\AddFriendViewModel.cs 123 60 Spirit_Caliburn_Micro_v1.0 
Error 4 Argument 2: cannot convert from 'string' to 'System.Action<System.Action<System.ComponentModel.PropertyChangedEventArgs>>' E:\C#_Projects\Pokec_Messenger\Spirit_Caliburn_Micro_v1.0\ViewModels\AddFriendViewModel.cs 123 65 Spirit_Caliburn_Micro_v1.0 
Error 2 The best overloaded method match for 'System.Reactive.Linq.Observable.FromEvent<System.ComponentModel.PropertyChangedEventArgs>(System.Action<System.Action<System.ComponentModel.PropertyChangedEventArgs>>, System.Action<System.Action<System.ComponentModel.PropertyChangedEventArgs>>)' has some invalid arguments E:\C#_Projects\Pokec_Messenger\Spirit_Caliburn_Micro_v1.0\ViewModels\AddFriendViewModel.cs 123 13 Spirit_Caliburn_Micro_v1.0 

我不知道,我都必須在新版本中使用了相同的funcionality哪種方法。

感謝您的建議。

回答

7

在最新的版本(1.1.10425.0),你需要使用FromEventPattern()

+0

太棒了!這修復了視頻「DevCamp 2010 Keynote-Rx:固化異步編程藍調」代碼中的錯誤@ 44.50。 – Contango 2013-10-20 19:11:01

3

官方論壇的Rx這裏http://social.msdn.microsoft.com/Forums/en-US/rx/thread/527002a3-18af-4eda-8e35-760ca0006b98張貼有他們在1.1.10425.0所作的更改寫了。李·坎貝爾在http://leecampbell.blogspot.com/2011/06/rx-v1010425breaking-changes.html有很好的寫下這些變化的影響。我也分享了我的升級舊樣本的經驗,網址爲http://www.thinqlinq.com/Post.aspx/Title/Updating-Reactive-Samples-to-10425-build

就你而言,你正在使用FromEvent方法和事件名稱的字符串。此簽名已移至FromEventPattern。您可以執行全局搜索並替換FromEvent(並將其更改爲FromEventPattern(沒有太多問題)。

此外,您似乎在此示例中調用LoadUser兩次(在Do中,然後在Subscribe中再次調用)。可能需要確保你需要這樣做兩次