Tôi đang lưu trữ các giao diện nhỏ từ một loạt các đối tượng vào một cửa hàng 'TInterfaceList' duy nhất với mục đích cung cấp danh sách các loại giao diện cụ thể cho người dùng cuối. giao diện sẽ hiển thị hàm 'GetName' nhưng tất cả các phương thức khác là duy nhất cho loại giao diện đó. Ví dụ ở đây là hai giao diện:Cách lưu trữ và định vị nhiều loại giao diện trong một Delphi TInterfaceList
IBase = interface
//----------------------------------------
function GetName : string;
//----------------------------------------
end;
IMeasureTemperature = interface(IBase)
//------------------------------------
function MeasureTemperature : double;
//----------------------------------------
end;
IMeasureHumidity = interface(IBase)
//----------------------------------------
function MeasureHumidity: double;
//----------------------------------------
end;
tôi đặt một số các giao diện vào một TInterfaceList đơn và sau đó tôi muốn quét danh sách cho một loại giao diện cụ thể (ví dụ như 'IMeasureTemperature') xây dựng một danh sách các con trỏ cho các đối tượng xuất các giao diện đó. Tôi muốn không đưa ra giả định về vị trí của các đối tượng đó, một số có thể xuất nhiều hơn một loại giao diện. Tôi biết tôi có thể làm điều này với một hệ thống phân cấp lớp bằng cách sử dụng một cái gì đó như:
If FList[I] is TMeasureTemperature then ..
nhưng tôi muốn làm điều gì đó tương tự với loại giao diện, Có thể không?
Bạn có thể muốn làm rõ liệu danh sách đầu tiên của bạn có chứa giao diện thực tế * loại * hoặc tham chiếu đến đối tượng * thể hiện * thực hiện các giao diện đó không. Dường như tất cả những người trả lời ở đây cho đến nay đã giả định sau này trong khi tôi đọc câu hỏi của bạn để nói về cái cũ ... sau đó một lần nữa bạn không thể lưu trữ giao diện * loại * trong một 'TInterfaceList' ... vì vậy tôi có thể sai ... –