2009-10-12 8 views
5

considerar lo siguiente:¿Cómo obtener el campo de acceso en Delphi usando RTTI?

TFieldType = class 
    fValue: string; 
end; 

TMainClass = class 
private 
    Ffield: TFieldType; 
public 
    function GetValue: string; 
end; 

En TMainClass.GetValue Estoy tratando de obtener los valores de los campos TMainClass:

function TMainClass.GetValue; 
begin 
    vCtx := TRTTIContext.Create; 
    vType := vCtx.GetType(Self.ClassInfo); 
    for vField in vType.GetFields do 
    vField.GetValue(
     //Here's the trouble, because i don't know how to get the instance 
    ); 

puede ser hay otras maneras de conseguir valores de los campos que son las instancias de otras clases?

Respuesta

6

usted tiene que pasar la instancia como un parámetro de GetValue como

vField.GetValue(self);

Para una mejor comprensión de rtti leer el remarkable articles about RTTI por Robert Love. Para este problema, especialmente este sobre Properties and Fields.

+0

Muchas gracias, he leído estos artículos, pero parece que no con tanta atención. Tu respuesta resolvió mi problema. – boombastic

Cuestiones relacionadas