IObservable <> ausente .Métodos de extensão de inscrição
Estou usando extensões RX e WF4 para criar um fluxo de trabalho que reage a mensagens observáveis para progredir o fluxo de trabalho. Para fazer isso, eu trago um objeto contendo um IObservable (ModuleMessage sendo minha classe abstrata). O problema que estou tendo é que .Subscribe falha ao reconhecer qualquer um dos seus métodos de extensão, ou seja, aquele para extpressões lambda / grupos de métodos. No código a seguir, tenho referências:
<code>using System.Activities; using System.Activities.Hosting; using System.Collections.Generic; using System.Reactive.Linq; </code>
E também a seguinte linha de código:
<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>
Com o erro em tempo de compilação de:
<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>
Por favor, note que este código é adaptado de uma amostra e não foi fatorado para o meu gosto, estou puramente preocupado com o problema em questão. Eu não sou profissional com RX ou WF4, mas usei a assinatura dessa maneira em outro lugar na mesma solução. Eu adicionei o RX a este projeto via NuGet.
Edit: o seguinte erro se eu usar como um grupo de métodos (em vez de lambda):
<code>Error 2 Argument 1: cannot convert from 'method group' to 'System.IObserver<Components.Messages.ModuleMessage>' <removed>\WaitForModuleVisitExtension.cs 34 119 Components </code>