У меня есть интерфейс под названием ISupport, который используется для предоставления технической поддержки.Как узнать, что конкретный объект класса уже находится в TInterfaceList?
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, который создается многократно, и информация, которую он будет сообщать, точно такая же. FInterfaceList.IndexOf позволяет избежать добавления одного и того же интерфейса.
Я хочу, чтобы ISupport от TyConfig регистрировался более одного раза.
[Как передать интерфейс объекту в Delphi] (http://stackoverflow.com/q/4138211/1699210) – bummi