/// <summary> /// Solicita a assinatura de um evento de serviço /// </summary> /// <param name="parametros"></param> /// <returns></returns> public AssinarEventoResponse AssinarEvento(AssinarEventoRequest parametros) { // Solicita a assinatura para o helper da sessao AssinarEventoResponse resposta = new AssinarEventoResponse() { CodigoMensagemRequest = parametros.CodigoMensagem }; // Bloco de controle try { // Faz a solicitação para o helper da sessao resposta = _clientes[parametros.CodigoSessao].AssinarEvento(parametros); } catch (Exception ex) { // Faz o log logger.Error(parametros, ex); // Informa na mensagem resposta.DescricaoResposta = ex.ToString(); resposta.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; } // Retorna return(resposta); }
/// <summary> /// Faz assinatura do evento para esta sessao /// </summary> /// <param name="parametros"></param> /// <returns></returns> public AssinarEventoResponse AssinarEvento(AssinarEventoRequest parametros) { // Prepara o retorno AssinarEventoResponse resposta = new AssinarEventoResponse() { CodigoMensagemRequest = parametros.CodigoMensagem }; // Pega referencia do servico Type tipoServico = Type.GetType(parametros.TipoServico); object servico = Ativador.Get(tipoServico); // Faz a assinatura EventInfo eventInfo = tipoServico.GetEvent(parametros.NomeEvento); MethodInfo mi = typeof(ServicoMensageriaClienteHelper).GetMethod("processarEvento", BindingFlags.NonPublic | BindingFlags.Instance); Delegate del = Delegate.CreateDelegate(eventInfo.EventHandlerType, this, mi); eventInfo.GetAddMethod().Invoke(servico, new object[] { del }); // Retorna return(resposta); }