Hello list. I need to implement lazy loading for an OPF so I need to intercept the read call to a property. Lets take the following classes:
TClient = class private FName: string; published property Name: string read FName write FName; end; TInvoice = class private FClient: TClient; published property Client: TClient read FClient write FClient; end; Tinvoice.Client need to be checked by the OPF before return its actual value. Some approaches I have outlined so far: 1. A future aspect implementation: so I can verify the Client property just before the value is returned to the caller. 2. A future (if possible) proxy (like Java proxy) implementation: so the OPF can place a "fake" TClient instance in the client property, and intercept calls to the Client instance. Just like Hibernate actually do. 3. A proxy object between TInvoice and TClient is possible today, with some effort from the user: TInvoice = class private FClient: specialize TProxy<TClient>; published property Client: TClient read GetClient write SetClient; end; GetClient: Result := FClient.GetValue; SetClient: FClient.SetInstance(AValue); 4. Finally a manual check is also possible and it's currently my preferred approach, but also with some effort from the user: TInvoice = class private FClient: TClient; published property Client: TClient read GetClient write FClient; end; GetClient: somecheck(Self, @FClient); Result := FClient; Is there some compiler magic I am missing? Joao Morais _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal