バージョンに変更がある場合、サードパーティからダウンロードする必要があるユニットが 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 変数を作成したくありません。