RX拡張機能とWF4を使用して、監視可能なメッセージに反応してワークフローを進行させるワークフローを作成しています。これを行うために、IObservableを含むオブジェクトを取り込みます(ModuleMessageは私の抽象クラスです)。私が抱えている問題は、.Subscribeがその拡張メソッド、つまりラムダ式/メソッドグループの拡張メソッドを認識できないことです。次のコードには、参照があります。
using System.Activities;
using System.Activities.Hosting;
using System.Collections.Generic;
using System.Reactive.Linq;
また、次のコード行もあります。
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);
}
コンパイル時のエラーは次のとおりです。
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
このコードはサンプルから改作されたものであり、私の好みに合わせて除外されていないことに注意してください。私は目前の問題に純粋に関心を持っています。私はRXまたはWF4のプロではありませんが、まったく同じソリューションの他の場所でこの方法でサブスクライブを使用しました。NuGetを介してこのプロジェクトにRXを追加しました。
編集:(ラムダの代わりに)メソッドグループとして使用する場合、次のエラー:
Error 2 Argument 1: cannot convert from 'method group' to 'System.IObserver<Components.Messages.ModuleMessage>' <removed>\WaitForModuleVisitExtension.cs 34 119 Components