delphi - Delphi XE2 中的命名空间

标签 delphi namespaces delphi-xe2

我有两个 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/

相关文章:

namespaces - Racket :评估,命名空间附加模块与命名空间要求

德尔福XE2 : empty application weighs 7 Mb

delphi - Delphi IDE 的 REPL?

delphi - 如何捕获 TDataModule.OnCreate 事件中的异常?

delphi - 在 Windows 资源管理器中选择文件并不总是有效

delphi - 为什么我不能将字节数组传递给采用 TByteDynArray 的例程?

delphi - 如何检查 Variant 是否未分配并设置了 varByRef 标志?

visual-studio - WSDL 中的 WCF 共享类型

php - Laravel - 调用未定义的方法 TrainingFacade::save()

delphi - VirtualTreeView 的 Firemonkey 版本