IObservable <> brak. Metody subskrypcji subskrypcji
Używam rozszerzeń RX i WF4 do tworzenia przepływu pracy, który reaguje na obserwowalne komunikaty, aby rozwijać przepływ pracy. Aby to zrobić, wprowadzam obiekt zawierający IObservable (ModuleMessage będący moją klasą abstrakcyjną). Problem, który mam, polega na tym, że .Subscribe nie rozpoznaje żadnej z jego metod rozszerzenia, a mianowicie tej dla grup wyrażeń / grup lambda. W poniższym kodzie mam referencje:
<code>using System.Activities; using System.Activities.Hosting; using System.Collections.Generic; using System.Reactive.Linq; </code>
A także następujący wiersz kodu:
<code> internal void AddModuleCallback(IModule module) { if (!addedCallback) { addedCallback = true; module.Messages.Where(m => m is MemberLeftModuleMessage || m is MemberRemovedModuleMessage).Subscribe(m => this.OnMemberExit(m)); // This line errors } } internal void OnMemberExit(ModuleMessage message) { // Gizmo was fired, resume the bookmark this.instance.BeginResumeBookmark( new Bookmark(ModuleVisit.BookmarkName), message is MemberLeftModuleMessage, r => this.instance.EndResumeBookmark(r), null); } </code>
Z błędem kompilacji:
<code>Error 1 Cannot convert lambda expression to type 'System.IObserver<Components.Messages.ModuleMessage>' because it is not a delegate type <Removed>\WaitForModuleVisitExtension.cs 34 119 Components </code>
Proszę zauważyć, że ten kod jest dostosowany z próbki i nie został uwzględniony w moim guście, jestem całkowicie zaniepokojony problemem. Nie jestem profesjonalistą z RX lub WF4, ale skorzystałem z subskrypcji w ten sam sposób w innym miejscu. Dodałem RX do tego projektu poprzez NuGet.
Edytuj: następujący błąd, jeśli używam jako grupy metod (zamiast lambda):
<code>Error 2 Argument 1: cannot convert from 'method group' to 'System.IObserver<Components.Messages.ModuleMessage>' <removed>\WaitForModuleVisitExtension.cs 34 119 Components </code>