我有一个公开Load方法的TbsManager类,如下所示:
TbsManager = class(TComponent)
private
FItems: TbsItems;
public
procedure Load(Item: TbsItem);TbsItem是一个TCollectionItem,它归TbsItems所有:
TbsItem = class(TCollectionItem)
TbsItems = class(TCollection)我想让我的TbsItems拥有Load方法(在onwer的owner类中),我是这样实现的:
procedure TbsItem.Load;
begin
TbsManager(TbsItems(GetOwner).Owner).Load(Self);
end;我不确定我做得对不对。这是一个安全的代码吗?
发布于 2012-10-26 03:45:20
如果您的设计要求这种层次结构,那么您的代码就是合理的。我会通过as操作符将其修改为使用检查类型转换。如果类不是所需的类型,则会引发运行时错误:
((GetOwner as TbsItems).Owner as TbsManager).Load(Self);https://stackoverflow.com/questions/13075996
复制相似问题