在新单元对外暴露其他单元的标识符
有时你需要把另一个单元里的标识符,在当前新单元中重新导出暴露。最终效果:只要引用这个新单元,就能直接使用该标识符。
适用场景:
- 为旧版本单元做兼容,保留旧调用方式;
- 封装内部底层单元,对外隐藏底层实现文件。
实现方式:在当前单元 interface 段重定义同名 / 别名标识符,转发底层单元的类型、常量。
修改MyUnit.pas
unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
interface
uses Graphics;
type
// 方式1:取别名,将 Graphics.TColor 对外命名为 TMyColor
TMyColor = TColor;
// 方式2:使用原名对外暴露,必须加单元限定 Graphics. 避免自引用循环
TColor = Graphics.TColor;
const
// 常量同样支持转发暴露
clYellow = Graphics.clYellow;
clBlue = Graphics.clBlue;
implementation
end.Code language: PHP (php)
完整例子
unit MyUnit;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
interface
uses Graphics;
type
// 1 Graphics.TColor type alias TMyColor
TMyColor = TColor;
// 2 Expose original name
// qualify with Graphics. to prevent self-loop.
TColor = Graphics.TColor;
const
// Constants support too.
clYellow = Graphics.clYellow;
implementation
end.Code language: PHP (php)
主程序
program showcolor;
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
uses MyUnit;
var
C1: TMyColor;
C2: TColor;
begin
C1 := clYellow;
C2 := clYellow;
end.
Code language: PHP (php)

在主程序中,是使用MyUnit中重新命名的名称的。
