我有两个 bpl 包:Core 和 Business,由一个应用程序使用。 Core.bpl 包含单元 User.pas,其中包含 TUser 类。 Core.bpl 中的 TUser 只有两个基本字段:登录名和密码。 我想使用新字段扩展 Business 包中的 TUser 类:UserName。我想将业务单位命名为基本单位:User.pas。
因此,我在 Business.bpl 中创建一个新单元 User.pas 并放置从 Core.bpl 扩展 TUser 的 TUser 类。 现在我需要将 TUser 从 Core.bpl 中分离出来,将 TUser 从 Business.bpl 中分离出来。我需要在这里使用“命名空间的力量”:)
我已阅读 Embarcadero doc page 。他们说可以通过命名来设置包的默认 namespace ,例如基础.核心. 我将我的包命名为 Base.Core.bpl 和 Extra.Business.bpl。编译后的文件就是这样命名的。 但其中的所有单元仍按以前的方式命名:User.pas -> User.dcu。
现在我在模块 User.pas 中有两个类 TUser:一个在包 Base.Core.bpl 中,另一个在包 Extra.Business.bpl 中。 Extra 中的 User.pas 看起来像
unit User;
interface
uses
Base.User;
type
TUser = class(Base.User.TUser)
end;
但是当我想编译它时,我有一个窗口:“删除用户。在所需的包 Base 中找到了单位用户。”
我该怎么做才能从 Base.User.TUser 继承新的 TUser 就像在 Java 中一样?
附注以防万一,我使用 Delphi XE2 IDE。
最佳答案
默认命名空间似乎是 Portal cake——这是一个谎言。您链接到的文档与该程序不匹配。
我制作了这个程序:
MyCompany.Programs.MyProgram.dpr
program MyCompany.Programs.MyProgram;
uses
MyUnit in 'MyUnit.pas';
begin
end.
MyUnit.pas
unit MyUnit;
interface
implementation
end.
生成的 .dcu 文件名为 MyUnit.dcu
。根据您链接到的文档,它应该命名为 MyCompany.Programs.MyUnit.dcu
。
我相信您必须在单元名称中明确指定 namespace 。
关于delphi - Delphi XE2 中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14005795/