Tôi đang cố gắng khai báo danh sách tùy chỉnh các giao diện mà từ đó tôi muốn kế thừa để có được danh sách các giao diện cụ thể (tôi biết về IInterfaceList, đây chỉ là một ví dụ). Tôi đang sử dụng Delphi 2007 vì vậy tôi không có quyền truy cập vào generics thực tế (đáng tiếc tôi).Làm cách nào để triển khai hai giao diện có phương thức có cùng tên?
Đây là một ví dụ đơn giản:
ICustomInterfaceList = interface
procedure Add(AInterface: IInterface);
function GetFirst: IInterface;
end;
TCustomInterfaceList = class(TInterfacedObject, ICustomInterfaceList)
public
procedure Add(AInterface: IInterface);
function GetFirst: IInterface;
end;
ISpecificInterface = interface(IInterface)
end;
ISpecificInterfaceList = interface(ICustomInterfaceList)
function GetFirst: ISpecificInterface;
end;
TSpecificInterfaceList = class(TCustomInterfaceList, ISpecificInterfaceList)
public
function GetFirst: ISpecificInterface;
end;
TSpecificInterfaceList sẽ không biên dịch:
Tuyên bố E2211 của khác 'GetFirst' từ khai trong giao diện 'ISpecificInterfaceList'
Tôi đoán Tôi về mặt lý thuyết có thể sử dụng TCustomInterfaceList nhưng tôi không muốn phải đúc "GetFirst" mỗi khi tôi sử dụng nó. Mục tiêu của tôi là có một lớp cụ thể mà cả hai đều thừa kế hành vi của lớp cơ sở và kết thúc tốt đẹp "GetFirst".
Tôi làm cách nào để đạt được điều này?
Cảm ơn!
có thể trùng lặp của [Cách ánh xạ tên giao diện cho các tên phương thức khác nhau?] (Http://stackoverflow.com/questions/1390552/how-to-map-interface-names-to-different-method-names) – RFerwerda