ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Rtti e TDSAdminClient

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
RRAAFFAA
Colaborador
Colaborador


Registrado: Sábado, 13 de Agosto de 2005
Mensagens: 1073

MensagemEnviada: Seg Dez 10, 2012 10:32 am    Assunto: Rtti e TDSAdminClient Responder com Citação

Olá galera...

Estou tentando usar Rtti na classe ancestral dos proxys Datasnap o TDSAdminClient...

Quero pegar um método desta forma...

Código:
type
  TDSAdminClientHelper = class helper for TDSAdminClient
  public
    function GetMethod(methodName: string): TRttiMethod;
  end;

implementation

function TDSAdminClientHelper.GetMethod(methodName: string): TRttiMethod;
var ctx: TRttiContext;
    info: TRttiType;
    method: TRttiMethod;
begin
  ctx := TRttiContext.Create;
  try
    info := ctx.GetType(self.ClassInfo);

    method := info.GetMethod(methodName);

    result := method;
  finally
    ctx.Free;
  end;
end;



porém quando tento executar esse código tenho o erro, "parameter count mitsmatch"

a chamada eu faço assim por exemplo:

Código:
getProxyClass.GetMethod('SetParamOnServerAsDate').Invoke(getProxyClass,
    [TValue.From<string>(cdsPadrao.ProviderName),
     TValue.From<string>('DATAFIM'),
     TValue.From<TDate>(dtpFinal.Date)]);




onde getProxyClass é uma função que retorna um TDSAdminClient, então como não tenho a classe proxy propriamente dita em mãos, tento usar rtti, o número de métodos antes que alguém pergunte, está correto, são 3.

quando eu uso o método normal, funciona numa boa, assim:

Código:
  ctx := TRttiContext.Create;
  try
    info := ctx.GetType(getProxyClass.ClassType);
    method := info.GetMethod('SetParamOnServerAsDate');


    method.Invoke(getProxyClass,
    [TValue.From<string>(cdsPadrao.ProviderName),
     TValue.From<string>('DATAINI'),
     TValue.From<TDate>(dtpInicial.Date)]);

   method.Invoke(getProxyClass,
    [TValue.From<string>(cdsPadrao.ProviderName),
     TValue.From<string>('DATAFIM'),
     TValue.From<TDate>(dtpFinal.Date)]);

  finally
    ctx.Free;
  end;



mas quando quero usar o helper pra facilitar um pouco minha vida, rsrssrsrs, nada feito...

alguém já viu isso ?

obrigado.
_________________
<b>Rafael</b>
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
RRAAFFAA
Colaborador
Colaborador


Registrado: Sábado, 13 de Agosto de 2005
Mensagens: 1073

MensagemEnviada: Seg Dez 10, 2012 11:55 am    Assunto: Responder com Citação

up
_________________
<b>Rafael</b>
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB