1
나는 자신의 ID에 따라 클래스 TUser의 객체를 삭제하는 프로 시저를 UserController 클래스에 가지고 있습니다. GenericController 클래스를 다른 클래스와 함께 할 수 있도록 만들고 싶습니다.Delphi :이 절차에서 매개 변수로 객체와 클래스를 전달하는 방법 (TMS Aurelius)?
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 아우렐리우스에서 찾기 :
function TObjectManager.Find<E>(IdValue: Variant): E;
begin
Result := E(Find(TClass(E), IdValue));
end;
을
다른 방법을 권장합니다. –
메서드 TGenericController.Delete에 generics를 사용하십시오. (IdValue : Variant); var LInst : E; ... LInst : = FManager.Find (IdValue); ... ' –
@SirRufo 나는 그 결과를 시험해보고 고맙겠습니다. –