命名空间和单位

时间:2011-09-15 20:06:11

标签: delphi namespaces delphi-xe2

我理解命名空间是单位的容器;但我还没有完全理解它的工作。 我试着更好地解释一下我想要的东西。例如,我有四个单位:

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;我真不知道。 但我想知道我这样做,当然如果可能的话。 再次感谢。

1 个答案:

答案 0 :(得分:2)

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

长时间以来,Delphi中已经存在具有点的单位的能力。

忘掉你对命名空间的了解,Delphi XE2不是那样的。在命名空间层次结构中移动单元意味着重命名它(改变前缀),与例如相反。容器/文件/类具有特定名称的Java,只有其位置表示命名空间层次结构中的位置。