技術サポート情報を提供するために使用される ISupport というインターフェイスがあります。
ISupport = Interface(IInterface)
procedure AddReport(const Report: TStrings);
End;
サポートに関連する情報を持つ各クラスは、このインターフェイスを実装し、コンストラクターで以下を呼び出します。
procedure TySupport.RegisterSupport(Support: ISupport);
begin
if FInterfaceList.IndexOf(Support) = -1 then
FInterfaceList.Add(Support);
end;
使用例(一部):
TyConfig = class(TInterfacedObject, ISupport)
private
procedure AddReport(const Report: TStrings);
public
constructor Create;
end;
constructor TyConfig.Create;
begin
if Assigned(ySupport) then
ySupport.RegisterSupport(Self);
end;
コードの後半で、リストを調べて AddReport を呼び出すことができます。
私の問題は、この TyConfig という 1 つのクラスが何度もインスタンス化され、レポートされる情報がまったく同じであることです。FInterfaceList.IndexOf は、まったく同じインターフェイスが追加されるのを避けるだけです。
TyConfig からの ISupport が複数回登録されるのを避けたいと思います。