Tôi đang sử dụng thư viện bên thứ ba delphi rất lớn mà không có mã nguồn, thư viện này có một số lớp với phương thức trừu tượng. Tôi cần phải xác định khi một phương pháp abtract được thực hiện bởi một lớp Descendant trong thời gian chạy để tránh EAbstractError: Abstract Error
và hiển thị thông báo tùy chỉnh cho người dùng hoặc sử dụng một lớp khác thay thế.Làm thế nào tôi có thể xác định xem một phương pháp trừu tượng có được triển khai không?
ví dụ trong mã này Tôi muốn kiểm tra trong thời gian chạy nếu MyAbstractMethod
được triển khai.
type
TMyBaseClass = class
public
procedure MyAbstractMethod; virtual; abstract;
end;
TDescendantBase = class(TMyBaseClass)
public
end;
TChild = class(TDescendantBase)
public
procedure MyAbstractMethod; override;
end;
TChild2 = class(TDescendantBase)
end;
Làm cách nào để xác định xem phương pháp trừu tượng có được triển khai trong lớp Con cháu trong thời gian chạy không?
Cảm ơn, nhưng nếu sử dụng cách này, tôi cần triển khai chức năng cho từng loại lớp và tôi sẽ tìm một giải pháp tổng quát hơn. – Salvador
Tôi không chắc liệu mã của bạn có chính xác không. 'ImplementsAbstractMethod (TChild2.Create)' sẽ trả về true, nhưng không phải 'TChild2', cũng không phải' TDescendantBase' đã ghi đè abstract 'MyAbstractMethod' của' TMyBaseClass'. http://pastebin.com/JufNPJkg –
@rinntech: Cảm ơn những người đứng đầu. Tôi đã cập nhật câu trả lời với mã đúng. –