我理解命名空间是单位的容器;但我还没有完全理解它的工作。 我试着更好地解释一下我想要的东西。例如,我有四个单位:
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;我真不知道。 但我想知道我这样做,当然如果可能的话。 再次感谢。
答案 0 :(得分:2)
基本上,XE2只是将RTL单元重命名为带有点的名称,并尝试加载在命令行上指定的带点缀前缀的单元。
长时间以来,Delphi中已经存在具有点的单位的能力。
忘掉你对命名空间的了解,Delphi XE2不是那样的。在命名空间层次结构中移动单元意味着重命名它(改变前缀),与例如相反。容器/文件/类具有特定名称的Java,只有其位置表示命名空间层次结构中的位置。