[fpc-devel] Allow object type property getter to expose a field as one of its base/parent types (patch included)

Sven Barth pascaldragon at googlemail.com
Sat Jun 13 11:07:28 CEST 2020


Am 04.06.2020 um 03:45 schrieb Kostas Michalopoulos via fpc-devel:
> Hello,
>
> I'd like to add a small feature for property getters to allow
> themselves be exposed as a base type of the real field. Example:
>
> ===
> program ExposeDerivedAsBase;
> {$mode objfpc}
> type
>    TBase = class
>    end;
>    TDerived = class(TBase)
>    end;
>    TSomething = class
>    private
>      FProp: TDerived;
>    public
>      property Prop: TBase read FProp;
>    end;
> begin
> end.
> ===
>
> The reasoning for this patch is to expose fields directly, without any
> additional overheads while being able to hide the real type that the
> object uses internally.

I'm against it. It would essentially mean that you can't use the same 
field for the setter or that you'd need to go through a method. 
Exchanging one restriction (can't use a base class for the property) for 
another (can't use the same field for the setter) isn't worth it 
especially as you can avoid performance issues by using a getter method 
that is declared inline (the only case where this won't help is if you 
access it using RTTI, but one call more or less doesn't really change 
much anyway).

Regards,
Sven


More information about the fpc-devel mailing list