0

バージョンに変更がある場合、サードパーティからダウンロードする必要があるユニットが 2 つ以上あります。

xml データバインドを使用してユニットを生成します。それらは次のようなものです:

unit tissV01;

interface

uses .....;

type
  IXMLMensagemTISS = interface(IXMLNode)
    ['{11773827-F0A1-42E0-99E1-E221DFAF8542}']
    { Property Accessors }
  end;


function GetmensagemTISS(Doc: IXMLDocument): IXMLMensagemTISS;

implementation

function GetmensagemTISS(Doc: IXMLDocument): IXMLMensagemTISS;
begin
  Result := XXXX as IXMLMensagemTISS;
end;

end.

ユニットtissV02

unit tissV02;

interface

uses .....;

type
  { IXMLMensagemTISS }
  IXMLMensagemTISS = interface(IXMLNode)
    ['{11773827-F0A1-42E0-99E1-E221DFAF8542}']
    { Property Accessors }
    property Cabecalho: string read Get_Cabecalho;
  end;

function GetmensagemTISS(Doc: IXMLDocument): IXMLMensagemTISS;

implementation

function GetmensagemTISS(Doc: IXMLDocument): IXMLMensagemTISS;
begin
  Result := XXXX as IXMLMensagemTISS;
end;

end.

私のアプリでは、使用するユニットを選択する必要があります。

unit test;

interface

uses tissV01,tissV02, .......;

type 
  TMyform = class(TForm)
  public
    msg3:IXMLMensagemTISS;   
  end;

implementation

procedure TMyform.ExecuteMessage:
var 
  xmlTISS : TXmlDocument;
begin
  xmlTISS := TXmlDocument.Create(nil); 
  if condition  then
    msg3 := tissV01.GetmensagemTISS(xmlTISS)
  else msg3 := tissV02.GetmensagemTISS(xmlTISS);
  with msg3.Cabecalho do  something;
end; 

end.

IXMLMensagemTISS は両方のユニットに共通であるため、論理的には機能しません。

インターフェイス名(IXMLMensagemTISS)の名前を変更せずにそれを行うための回避策はありますか?

コードを簡素化したいのですが、将来このタイプの多くのユニットを維持する必要があります。問題は、すべてが IXMLMensagemTISS を実装していて、それを変更するために何もできないことです。

msgV01:=tissv01.GetmensagemTISS、msgV01:=tissv02.GetmensagemTISS など、多くの msg 変数を作成したくありません。

4

1 に答える 1