Ich verwende RX-Erweiterungen und WF4, um einen Workflow zu erstellen, der auf beobachtbare Nachrichten reagiert, um den Workflow zu verbessern. Dazu bringe ich ein Objekt ein, das ein IObservable enthält (ModuleMessage ist meine abstrakte Klasse). Das Problem, das ich habe, ist, dass .Subscribe keine seiner Erweiterungsmethoden erkennt, nämlich die für Lambda-Komprimierungen/Methodengruppen. Im folgenden Code habe ich Referenzen:IObservable <> fehlende .Subscribe-Erweiterungsmethoden
using System.Activities;
using System.Activities.Hosting;
using System.Collections.Generic;
using System.Reactive.Linq;
Und auch die folgende Codezeile:
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);
}
Mit dem Fehler bei der Kompilierung von:
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
Bitte beachten Sie, dass diese Code ist aus einer Probe angepasst und wurde nicht nach meinem Geschmack ausgeklammert, ich bin nur besorgt über das Problem zur Hand. Ich bin kein Profi mit RX oder WF4, habe aber auf diese Weise woanders in derselben Lösung abonniert. Ich habe RX über NuGet zu diesem Projekt hinzugefügt.
Edit: der folgende Fehler, wenn ich als Methodengruppe (anstelle von Lambda) verwenden:
Error 2 Argument 1: cannot convert from 'method group' to 'System.IObserver<Components.Messages.ModuleMessage>' <removed>\WaitForModuleVisitExtension.cs 34 119 Components
Können Sie einen Link zu der von Ihnen erwähnten Stichprobe freigeben? Das sieht ziemlich interessant aus. Ich dachte immer, dass Observables nicht serialisierbar sind, also wie können Sie sie in einem Workflow verwenden, der zu jedem Zeitpunkt Unterstützung für die Persistenz benötigt? – julealgon
Das war so lange her, ich kann mich nicht einmal erinnern. Ich denke, dass ich nie zu diesem Punkt gekommen bin, bevor ich durch etwas anderes glänzendes abgelenkt wurde (das war ein persönliches Projekt) – Sprague