⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optosoapdomcustom.pas

📁 Delphi开发webservice的一套例子
💻 PAS
字号:
{*******************************************************}
{                                                       }
{ Borland Delphi Visual Component Library               }
{                SOAP Support                           }
{                                                       }
{ Copyright (c) 2001 Borland Software Corporation       }
{                                                       }
{*******************************************************}

unit OPToSoapDomCustom;

interface

uses TypInfo, IntfInfo,  InvokeRegistry, XMLDoc, XMLIntf;

type

  ICustomConvert = interface
  ['{96832CB3-BC12-4C45-B482-26F7160EDE51}']
    procedure ConvertSoapParamToNative(MethMD: PIntfMethEntry;
      InvContext: TInvContext; ArgCount: Integer; Node: IXMLNode);
    procedure ConvertNativeParamToSoap(Node: IXMLNode;
          Name: string; Info: PTypeInfo; P: Pointer);
  end;

  TConverterEntry = record
    Converter: ICustomConvert;
    AClass: TClass;
  end;

  TOPToSoapDomCustomRegistry = class
  private
    FConverters: array of TConverterEntry;
  public
    procedure RegisterCustomConverter(AClass: TClass; URI, TypeName: string; Converter: ICustomConvert);
    function GetConverter(AClass: TClass): ICustomConvert;
  end;

var
  ConverterRegistry: TOPToSoapDomCustomRegistry;

implementation

{ TOPToSoapDomCustomtRegistry }

function TOPToSoapDomCustomRegistry.GetConverter(
  AClass: TClass): ICustomConvert;
var
  I: Integer;
begin
  for I := 0 to Length(FConverters) - 1 do
    if FConverters[I].AClass = AClass then
      Result :=  FConverters[I].Converter;
end;

procedure TOPToSoapDomCustomRegistry.RegisterCustomConverter(
  AClass: TClass; URI, TypeName: string; Converter: ICustomConvert);
var
  Index: Integer;
begin
  Index := Length(FConverters);
  SetLength(FConverters, Index + 1);
  FConverters[Index].Converter := Converter;
  FConverters[Index].AClass := AClass;
end;

initialization
   ConverterRegistry := TOPToSoapDomCustomRegistry.Create;
finalization
   ConverterRegistry.Free;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -