技術サポート情報を提供するために使用される 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 が複数回登録されるのを避けたいと思います。