Results 1 to 9 of 9

Thread: Klasse met en zonder RTTI attributen

  1. #1

    Klasse met en zonder RTTI attributen

    Hallo hallo,

    Is het mogelijk om in principe twee dezelfde klassen te hebben, maar één met RTTI attributen en één zonder?

    De RTTI attributen die ik gebruik komen uit het kbmmw framework en deze wil ik buiten het component laten dat ik aan het schrijven ben. Ik heb ze echter wel nodig voor andere onderdelen van mijn applicatie.

    Code:
      [kbmMW_Root('SearchFilterItem', [mwrfIncludeOnlyTagged])]
      TSearchFilterItem = class
      private
        FFieldName: string;
        FFilterOperator: TFilterOperator;
        FLogicOperator: TLogicOperator;
        FSearchValue: Variant;
      public
        constructor Create;
        [kbmMW_Element('field_name')]
        property FieldName: string read FFieldName write FFieldName;
        [kbmMW_Element('filter_operator')]
        property FilterOperator: TFilterOperator read FFilterOperator write FFilterOperator;
        [kbmMW_Element('logic_operator')]
        property LogicOperator: TLogicOperator read FLogicOperator write FLogicOperator;
        [kbmMW_Element('search_value')]
        property SearchValue: Variant read FSearchValue write FSearchValue;
      end;
    Code:
     
      TSearchFilterItem = class
      private
        FFieldName: string;
        FFilterOperator: TFilterOperator;
        FLogicOperator: TLogicOperator;
        FSearchValue: Variant;
      public
        constructor Create;
        property FieldName: string read FFieldName write FFieldName;
        property FilterOperator: TFilterOperator read FFilterOperator write FFilterOperator;
        property LogicOperator: TLogicOperator read FLogicOperator write FLogicOperator;
        property SearchValue: Variant read FSearchValue write FSearchValue;
      end;
    Bij voorbaat dank!

  2. #2
    Senior Member EricLang's Avatar
    Join Date
    May 2002
    Location
    Holland
    Posts
    3,021
    Het korte antwoord is volgens mij: Nee dat kan niet.
    Volgens mij moet je dan OF met ifdefs werken (zonder of met rtti) OF iets aan de klasse toevoegen.

  3. #3
    iets aan de klasse toevoegen.
    Wat bedoel je hiermee?

  4. #4
    Senior Member EricLang's Avatar
    Join Date
    May 2002
    Location
    Holland
    Posts
    3,021
    Ik bedoel (bijvoorbeeld) de een of andere (virtual, static) method die een bepaalde functionaliteit (ja/nee) teruggeeft. Ik weet niet precies wat er beoogt wordt, dus kan daar weinig zinnigs over zeggen.

  5. #5
    Klinkt alsof je een soort dto (data transfer object) wilt maken. De 'echte' class heeft de logica. De dto bevat alleen de properties die opgeslagen worden zonder verdere logica. In die class kan je dan ook dit soort attributen toevoegen die helpen bij de verdere verwerking van de data, in dit geval voor het uitlezen en opslaan m.v.b. kbmmw.
    1+1=b

  6. #6
    Bedankt voor je hulp!

  7. #7
    Dat komt inderdaad wel redelijk overeen met wat ik aan het bouwen ben

  8. #8
    Lijkt me dan prima om het zo te doen. Die twee classes hoeven overigens niet dezelfde naam te hebben. Dat zou ik zelfs niet doen.

    Verder zou ik ook zorgen dat het kernobject, de TSearchFilterItem die de logica bevat, niets van dat andere object weet. Je zou dus een derde kunnen hebben die de toekenning regelt, of volgens traditioneel gebruik de Assign en de AssignTo methods in je TSearchFilterItemDto implementeren.
    1+1=b

  9. #9
    Denk dat dit conceptueel inderdaad mooier is. Het was verleidelijk om het in één klasse te zetten.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •