コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }