Summary

DefClassAttribute can be applied to object property to specify the default class of property value.

Syntax

DefClassAttribute = class(TClassBaseAttr);

Remarks

Due to inheritance the run-time class of object property value can be different from property compile-time type; value class can be, actually, a sub-class of the property type. In this case serializer have to write object class name to be able to create an object of correct class during de-serialization. From the other side, serializer will not write object class name, if the object class is equal to property type; this makes output more readable.

However, if usual value class is different from property type, DefClassAttribute can be used to change the default class, used by serializer for comparison.

Examples

DelphiCopyCode imageCopy Code
type
  TSubObject = class
  end;

  TMyObject = class
  private
    FSubObj: TObject; // TSubObject value is really assigned.
  public
    [DefClass(TSubObject)]
    property SubObj: TObject read FSubObj write FSubObj;
  end;