Estoy usando extensiones RX y WF4 para crear un flujo de trabajo que reaccione a los mensajes observables para avanzar en el flujo de trabajo. Para hacer esto, traigo un objeto que contiene un IObservable (ModuleMessage es mi clase abstracta). El problema que tengo es que .Subscribe no reconoce ninguno de sus métodos de extensión, a saber, el de lambda extpressions/method groups. En el siguiente código, tengo referencias:Falta IObservable <>. Métodos de extensión de suscripción
using System.Activities;
using System.Activities.Hosting;
using System.Collections.Generic;
using System.Reactive.Linq;
Y también la siguiente línea de código:
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);
}
Con el error de tiempo de compilación de:
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
por favor, esto el código se ha adaptado de una muestra y no se ha extrapolado a mi gusto, estoy totalmente preocupado por el problema que tenemos entre manos. No soy partidario de RX o WF4, pero he usado suscribirse de esta manera en cualquier otra parte de la misma solución. He agregado RX a este proyecto a través de NuGet.
Editar: el siguiente error si uso como un grupo de métodos (en lugar de lambda):
Error 2 Argument 1: cannot convert from 'method group' to 'System.IObserver<Components.Messages.ModuleMessage>' <removed>\WaitForModuleVisitExtension.cs 34 119 Components
¿Puedes compartir un enlace a la muestra que mencionaste? Esto se ve bastante interesante. Siempre pensé que los Observables no eran serializables, así que ¿cómo puedes usarlos dentro de un flujo de trabajo que necesita soporte para la persistencia en cualquier momento? – julealgon
Esto fue hace tanto tiempo, ni siquiera puedo recordar. Creo que nunca llegué a ese punto antes de distraerme con algo brillante (este era un proyecto personal) – Sprague