私はAureliusORMフレームワークとSpring4Dフレームワークを統合しようとしていますが、ほとんどの場合成功していますが、Aurelius ORM(およびその他も)は、データベースへのオブジェクトのロードと保存を「オブジェクトマネージャー」に依存しています。私が行っている作業の一部は、クラスの実装とインターフェースを可能な限り分離しようとしています。ただし、このObject Manager(AureliusのTObjectManager)のインターフェイスを作成するときに、ObjectManagerの「Find」メソッドを実装するのに問題があります。たとえば、オブジェクトマネージャは次のメソッドをサポートしています。
MyObjectManager := TObjectManager.Create(Connection);
ExistingSale := MyObjectManager.Find<TSale>(1); // Find the Sale record with ID = 1 of the class TSale.
ObjectManager宣言をインターフェースに変換しようとしています。次の方法で変換しようとしています。
IObjectManager = Interface
['{1F54162B-D7D7-4E42-AC9D-D269803371DB}']
function Find<T>(ID: Integer) : T;
end;
そして、これが問題のあるところです。コンパイラがエラーで失敗するからです。
[DCC Error] E2535 Interface methods must not have parameterized methods
基本的に、自分のObjectManagerで呼び出すことができるインターフェイス関数を考え出す必要があります。次に例を示します。
function TMyOwnObjectManager.Find<T>(ID: Integer) : T;
begin
Result:=fAureliusObjectManager.Find<T>(ID);
end;
あなたの助けを誰かに感謝します、今数日間魂を考え出そうとしています。