Tengo una clase con accesorios publicados que serializo en XML.Obtener un valor attribue de la propiedad específica
MyAttr = class(TCustomAttribute)
private
FName: string;
public
constructor Create(const Name: string);
property Name: string read FName write FName;
end;
MyClass = class(TPersistent)
private
FClassCaption: string;
published
[MyAttr('Class')]
property ClassCaption: string read FClassCaption write FClassCaption;
end;
Dado que el tamaño XML es crucial, utilizo atributos para dar nombre más corto de la propiedad (es decir, no puedo definir una propiedad denominada 'clase'). serialización implementa de la siguiente manera:
lPropCount := GetPropList(PTypeInfo(Obj.ClassInfo), lPropList);
for i := 0 to lPropCount - 1 do begin
lPropInfo := lPropList^[i];
lPropName := string(lPropInfo^.Name);
if IsPublishedProp(Obj, lPropName) then begin
ItemNode := RootNode.AddChild(lPropName);
ItemNode.NodeValue := VarToStr(GetPropValue(Obj, lPropName, False));
end;
end;
necesito perfectas condiciones: si la propiedad marcada con MyAttr, obtener "MyAttr.Name" en lugar de "lPropInfo^.Nombre".