クラス UserController に、ID に基づいてクラス TUser のオブジェクトを削除する手順があります。GenericController クラスを作成して、他のクラスでこれを実行できるようにしたいと考えています。これは私の手順です:
procedure TUserController.DeleteUser(User: TUser);
begin
if not FManager.IsAttached(User) then
User := FManager.Find<TUser>(User.ID);
FManager.Remove(User);
end;
私はこれをやってみました:
procedure TGenericController.Delete(Class_: TObject; Class_ID: Integer);
begin
if not FManager.IsAttached(Class_) then
Class_ := FManager.Find<Tclass(Class_)>(Class_ID);
FManager.Remove(Class_);
end;
しかし、私はこのエラーを受け取ります:
[dcc32 Error] GenericController.pas(36): E2531 Method 'Find' requires explicit type argument(s)
これは、TMS Aurelius の Find メソッドです。
function TObjectManager.Find<E>(IdValue: Variant): E;
begin
Result := E(Find(TClass(E), IdValue));
end;