Ich habe zwei BPL-Pakete: Core und Business, die von einer Anwendung verwendet werden. Core.bpl enthält die Unit User.pas mit der TUser-Klasse. TUser in Core.bpl hat nur zwei Basisfelder: Login und Passwort. Ich möchte TUser-Klasse in Business-Paket mit neuem Feld erweitern: UserName. Und ich möchte Business Unit als Basiseinheit nennen: User.pas.Namespaces in Delphi XE2
Also, ich erstelle eine neue Einheit User.pas in Business.bpl und legen Sie dort TUser Klasse, die TUser von Core.bpl erweitert. Nun muss ich TUser von Core.bpl und TUser von Business.bpl zu teilen. Und ich muss "Power of Namespaces" hier verwenden :)
Ich habe Embarcadero doc page gelesen. Sie sagen, dass man den Standard-Namespace für ein Paket mit einer Benennung festlegen kann, z. Base.Core. Ich nannte meine Pakete als Base.Core.bpl und Extra.Business.bpl. Und kompilierte Dateien heißen so. Aber alle Einheiten in ihnen sind noch benannt wie zuvor: User.pas -> User.dcu.
Jetzt habe ich zwei Klassen TUser in Modulen User.pas: eine in Paket Base.Core.bpl, andere in Paket Extra.Business.bpl. User.pas in extra sieht aus wie
unit User;
interface
uses
Base.User;
type
TUser = class(Base.User.TUser)
end;
Aber wenn ich es kompilieren wollen, ich habe ein Fenster bekommt: "Benutzer entfernen Unit (s) User wurden in gewünschtem Paket Basis gefunden."
Was muss ich tun, um einen neuen TUser von Base.User.TUser zu erben, wie es beispielsweise in Java sein kann?
P.S. Nur für den Fall verwende ich Delphi XE2 IDE.
Sollten Sie sie nicht als 'Unit Base.User' und 'Unit Business.User' benennen, wenn Sie solche Notation verwenden möchten? –
Es gibt viele Einheiten in Core und in Business ... Und alle sind in SVN :(Umbenennung von allen ist der letzte Weg ... Vielleicht kann man es einfacher machen? – omickron
Ich bin bei dir Dokumentation sagt eine Sache, aber das Programm verhält sich völlig anders. –