1つのアプリケーションで使用されるCoreとBusinessの2つのbplパッケージがあります。Core.bplには、TUserクラスを含むユニットUser.pasが含まれています。Core.bplのTUserには、ログインとパスワードの2つの基本フィールドしかありません。ビジネスパッケージのTUserクラスを新しいフィールドUserNameで拡張したいと思います。そして、ビジネスユニットをベースユニットとしてUser.pasと名付けたいと思います。
そこで、Business.bplに新しいユニットUser.pasを作成し、Core.bplからTUserを拡張するTUserクラスを配置します。次に、TUserをCore.bplから、TUserをBusiness.bplから分割する必要があります。そして、ここで「名前空間の力」を使用する必要があります:)
Embarcaderoのドキュメントページを読みました。彼らは、Base.Coreのように、パッケージに名前を付けてデフォルトの名前空間を設定できると言っています。パッケージにBase.Core.bplおよびExtra.Business.bplという名前を付けました。そして、コンパイルされたファイルはそのように名付けられます。ただし、その中のすべてのユニットには、以前と同じ名前が付けられています:User.pas->User.dcu。
これで、モジュールUser.pasに2つのクラスTUserがあります。1つはパッケージBase.Core.bplにあり、もう1つはパッケージExtra.Business.bplにあります。ExtraのUser.pasは次のようになります
unit User;
interface
uses
Base.User;
type
TUser = class(Base.User.TUser)
end;
しかし、それをコンパイルしたいとき、「ユーザーを削除します。ユニットユーザーは必要なパッケージベースで見つかりました。」というウィンドウが表示されます。
たとえば、JavaのようにBase.User.TUserから新しいTUserを継承するにはどうすればよいですか?
PS念のため、DelphiXE2IDEを使用しています。