2

我正在使用 delphi 2009 和 VCL 组件。我创建了一个名为 TStreets 的集合,该集合由 TStreet 项组成,它只有两个私有字段。现在我需要向 Tstreet 类添加另一个字段/属性来跟踪(通过使用引用)类 TMyObject 的其他对象。

一个例子:假设 TStreet 集合包含五个元素和十个对象 (TMyObject) 在我的应用程序运行时存在。TMyObject 的每个对象只能属于一个 TStreet,因此我需要为每个 TStreet 保存对象的所有引用,然后能够将一个或多个对象引用从一个 TStreet 移动到另一个。我应该在保存对象引用的 TStreet 下创建另一个集合吗?

走的路是否正确?

4

1 回答 1

4

鉴于以下。

TMyObject = class
  ...
end;

TStreet = class
 ...
 public
   property MyObject : TMyObject ...;
end;

TStreets = TList<TStreet>;

从阅读您的问题看来,TMyObject 只能绑定到一个 TStreet。

然后我会建议颠倒引用。

TStreet = class;

TMyObject = class
protected
  FStreet : TStreet;
public
  property Street : TStreet read FStreet write FStreet;
end;

TMyObjectList = TList<TMyObject>;

TStreet = class
 private
   // Looks through MyObjectList returning correct 
   function GetMyObjecty : TMyObject; reference.
 public
   property MyObject : TMyObject read GetMyObject;
   // Reference to list that contains all instance of TMyObjectList.
   property MyObjectList : TMyObjectList; 
end;

TStreets = TList<TStreet>;

TMyObjectList = TList<TMyObject>;
于 2011-02-14T17:26:55.460 回答