1

我知道命名空间是一个单元容器;但我还没有很好地理解它。我试图更好地解释我想要告诉的内容。例如我有四个单位:

1) Animals               // es: class TAnimals
2) Animals.Dog           // es: class TDog
3) Animals.Cat           // es: class TCat
4) Animals.Cat.Female    // es: class TFemale

当然,这四个单元是在四个不同的文件中。如果我制作新单元并需要全部使用它,我会写:

uses 
  Animals, Animals.Dog, Animals.Cat, Animals.Cat.Female

现在,直到很少有问题不存在,但是什么时候很多?所以我想知道,因为我可以更好地管理,只制作一个单元:包含所有其他单元的动物(命名空间根),例如:

uses
  Animals;

并且可以从 Animal 访问在第二、第三等级别的所有其他命名空间中定义的所有其他类,例如:

program Project1;
uses 
  Animals;
var 
  x: Animals;
begin
  x := TAnimals.Cat.Female.Create;
  try
    ....
  finally
    x.Free;
  end;
end.

在互联网上搜索,也许我已经找到了一些使用界面的东西,但我的印象是不正确的解决方案,因为在我看来,对于使用 delphi xe2 原生的东西来说,这很复杂。很可能我错了,或者它确实指的是一些旧版本的delphi;说真的,我不知道。但我想知道我这样做,当然如果可能的话。再次非常感谢。

4

1 回答 1

2

基本上 XE2 只是将 RTL 单元重命名为带有点的名称,并尝试加载在命令行上指定的带有点前缀的单元。

在 Delphi 中拥有带有点的单位的能力已经存在很长时间了。

忘掉你对命名空间的了解吧,Delphi XE2 不是这样的。在命名空间层次结构中移动一个单元意味着重命名它(更改前缀),这与 Java 中容器/文件/类具有特定名称的情况相反,并且只有它的位置表明在命名空间层次结构中的位置。

于 2011-09-15T20:14:47.517 回答