1

次のような 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 の所有者クラスにある) を持たせたいのですが、これが私がそれを達成した方法です:

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 に答える