2013-08-06 6 views
0

TWebModule에서 디자인 타임에 정의 된 TWebAction 항목이 계속 증가하면서 OnAction 이벤트와 결합 된 웹 서비스가 있습니다.디자인 타임 TWebActions와 TObjects의 구조를 연결하는 방법은 무엇입니까?

요청은 그때 JSON 데이터 및 모든 요청/응답 HTTP POST 요청으로 변경하려는 HTTP는 URL을 통해 얻고 응답이 'TSuperObject'.S['errormessage'] := lErrMsg;
처럼 문을 런타임에 구성 즉, JSON 데이터를, '손수'되어 있습니다 SuperObjects TSuperRttiContext AsJSONAsType 메서드를 사용하여 JSON 구조가 적절한 객체 (및 어쩌면 레코드)와 직렬화되는 중입니다.

JSON (de) 직렬화 된 새 '객체를 디자인 타임 TWebactions과 매핑/연결하기위한 데이터 구조를 어떻게 만들 수 있습니까? 이러한 객체는 모두 다르며 (일부 속성은 공통 조상에있을 수 있음) 객체 또는 레코드 속성 자체를 포함 할 수 있습니다 (FData: Array of TSubObject [SuperObject가 잘 serialize 할 수 있음]).

참고 : 이미 타이밍 통계를 수집하는 데 사용한 신속하고 잘못된 열거 형 형식 (이미 유지 관리해야 함)이 통합되어있을 수도 있습니다.

type 
    TWebAct = (
    ttinfo, 
    ttlogin, 
    ... 
    ttgetcostitemlist, 
    ttgetvacationplanning 
    ); 

기본적으로 새로운 TWebAction이 추가 될 때마다 유지 관리가 필요한 곳의 수를 최소화하고 싶습니다.

답변

1

TWebAct 열거 형을 사용하여 웹 작업을 각각의 요청 및 응답 구조에 연결하는 레코드 배열을 구성 할 수 있습니다.

type 
    // ancestor class for all requests and responses 
    TJSONStructure = class(TObject); 

    TJSONRequest = class(TJSONStructure); 
    TJSONRequestClass = class of TJSONRequest; 

    TJSONResponse = class(TJSONStructure); 
    TJSONResponseClass = class of TJSONResponse; 

const 
    WEBACT_STRUCTURES: array[TWebAct] of 
    record 
     RequestClass: TJSONRequestClass; 
     ResponseClass: TJSONResponseClass; 
    end = (
     {ttInfo} (RequestClass: TInfoRequest; ResponseClass: TInfoResponse) 
    , {ttLogin} (RequestClass: TLoginRequest; ResponseClass: TLoginResponse) 
    ... 
); 
+0

마지막으로 메타 클래스를 사용하기위한 좋은 사용은 - 당신은 그냥 소리 쳐 도움을 필요로하는 경우 나, LOL 그 ;-) –

+0

주위에 내 머리를 얻을 수 있는지 보자. 내 머리가 꽤 잘 감싸였습니다. :) –

+0

나는 여기에 hollering 해요 http://stackoverflow.com/questions/18125462/how-to-call-object-method-for-any-object-in-my-metaclass –