首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我需要调用owner的owner方法时该怎么办?

当我需要调用owner的owner方法时该怎么办?
EN

Stack Overflow用户
提问于 2012-10-26 03:41:51
回答 1查看 241关注 0票数 1

我有一个公开Load方法的TbsManager类,如下所示:

代码语言:javascript
复制
 TbsManager = class(TComponent)
 private
   FItems: TbsItems;  
 public
   procedure Load(Item: TbsItem);

TbsItem是一个TCollectionItem,它归TbsItems所有:

代码语言:javascript
复制
TbsItem = class(TCollectionItem)
TbsItems = class(TCollection)

我想让我的TbsItems拥有Load方法(在onwer的owner类中),我是这样实现的:

代码语言:javascript
复制
procedure TbsItem.Load;
begin
  TbsManager(TbsItems(GetOwner).Owner).Load(Self);
end;

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-26 03:45:20

如果您的设计要求这种层次结构,那么您的代码就是合理的。我会通过as操作符将其修改为使用检查类型转换。如果类不是所需的类型,则会引发运行时错误:

代码语言:javascript
复制
((GetOwner as TbsItems).Owner as TbsManager).Load(Self);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13075996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档