我使用WSDL导入程序在Delphi XE中创建了一个Web服务。Delphi为我生成了ITransmitter1.pas模块,其中包含ITransmitter接口和GetITransmitter函数。
要使用Web服务,我使用:
var Transmitter: ITransmitter;
begin
Transmitter := GetITransmitter(True, '', nil);
Transmitter.Transmit(Memo1.Text, OutXML);
end;
但是我无法在 Transmit 方法的任何地方看到函数体...
在 ITransmitter.pas 文件中,我看到:
InvRegistry.RegisterInterface(TypeInfo(ITransmitter), 'urn:TransmitterIntf-ITransmitter', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ITransmitter), 'urn:TransmitterIntf-ITransmitter#Transmit');
如果我注释掉这些行,就会出现“接口不支持”的错误。 从这里看来,Delphi在运行时添加了方法! 这是如何实现的?我能否在运行时向我的类中添加方法?