(Delphi)类型强制转换和泛型的结合运用的求救!

MetaPheno 2016-04-14 09:09:52
目前有个项目要在delphi里调用一系列的Webservice(也是delphi写的),正常我们是这样写的:

mHttpRio := THTTPRIO.Create(nil);
mHttpRio.URL := 'XXXXXXXXXXXXXXX';
Result := (mHttpRio as ITest).Test;

想到delphi有泛型,于是设计了一个函数:
GetRemoteService<T>: T;
begin
mHttpRio := THTTPRIO.Create(nil);
mHttpRio.URL := 'XXXXXXXXXXXXXXX';
//问题来了,接下里我怎么把 mHttpRio 转换成 T类型后返回??
end;

实际调用时我只需要;
var
mService: ITest;
begin
mService := GetRemoteService<ITest>;
Result := mService.Test;
end;

备注:我设计这个函数的目的:1、若干Webservice的接口类型不一样;
2、每个Webservice的url也是不一样的,但可以透过接口类型去获取
...全文
571 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2016-04-17
  • 打赏
  • 举报
回复
还在用D7的路过,泛型是好啊
hongss 2016-04-16
  • 打赏
  • 举报
回复
好!又学到一招!
lyhoo163 2016-04-15
  • 打赏
  • 举报
回复
解决了,顶一下,接分。
iamduo 2016-04-15
  • 打赏
  • 举报
回复
泛型不熟。 顺便问一下,Supports 不能用吗?
tcmakebest 2016-04-14
  • 打赏
  • 举报
回复
发贴果然有助于问题的解决, GetTypeData(TypeInfo(T)).Guid 这个挺好
MetaPheno 2016-04-14
  • 打赏
  • 举报
回复
自己在发帖后的5分钟内解决: function GetRemoteService<T>: T; begin mHttpRio := THTTPRIO.Create(nil); mHttpRio.URL := 'XXXXXXXXXXXXXXX'; mHttpRio.QueryInterface(GetTypeData(TypeInfo(T)).Guid, Result); end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧