RRAAFFAA Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sábado, 13 de Agosto de 2005 Mensagens: 1073
|
Enviada: Seg Dez 10, 2012 10:32 am Assunto: Rtti e TDSAdminClient |
|
|
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> |
|