1

我有 TbsManager 类,它公开 Load 方法,如:

 TbsManager = class(TComponent)
 private
   FItems: TbsItems;  
 public
   procedure Load(Item: TbsItem);

TbsItem 是一个 TCollectionItem,它由 TbsItems 拥有:

TbsItem = class(TCollectionItem)
TbsItems = class(TCollection)

我希望我的 TbsItems 具有 Load 方法(在 onwer 的所有者类中),这就是我实现它的方式:

procedure TbsItem.Load;
begin
  TbsManager(TbsItems(GetOwner).Owner).Load(Self);
end;

我不确定我是否做得对。它是一个安全的代码吗?

4

1 回答 1

1

如果您的设计要求该层次结构,那么您的代码是合理的。我会用as操作员修改它以使用检查的演员表。如果类不是所需的类型,这些将引发运行时错误:

((GetOwner as TbsItems).Owner as TbsManager).Load(Self);
于 2012-10-25T19:45:19.507 回答