[fpc-devel] .NET Reflection vs RTTI
Daniël Mantione
daniel.mantione at freepascal.org
Tue Nov 20 10:45:11 CET 2007
Op Tue, 20 Nov 2007, schreef Marco van de Voort:
> > > Apart from the custom attributes and the Invoke, I don't see =
> > > what there is extra ?
> > =
> > No usable RTTI for records
> > No usable RTTI for arrays
> > No RTTI for private, protected and public(!) members (only published)
> > No usable RTTI for published methods (param and return types are just g=
iven
> > as strings, not as references to other type infos, no information about
> > calling convention)
> > No usable type information for published fields (only a name to offset
> > mapping is given, no type information at all)
> > And so on...
> =
> Note that all this can be remedied (and better) by a simple code generator
> (e.g. codesmith), as long as you alone control the project.
Ok, but the question to be asked is why would you want to write a code =
generator if the compiler can generate usable RTTI for you?
If you want you can say the whole concept of RTTI is nonsense, since you =
can make those data structures yourself. However, the fact that the =
compiler generates them, saves you the work of writing and maintaining =
those RTTI data structures.
=
> The .NET framework however also needs these attributes to interact with
> Windows server components as IIS, and I can also imagine this, when used
> sparingly applies to other server component vendors (hi Thorsten) too.
Attributes are IMO syntactic sugar for:
const datatype1_attributes:Tdatatype1_attributes=3D(
rtti:typinfo(datatype1),
attribute1:value1,
attribute2:value2,
attribute3:value3
);
I don't see why you would need dynamically allocated data structures, =
after all, if you put them into the language, they are static as well.
The extra work and maintenance argument for normal RTTI doesn't hold for =
attributes since attributes as language feature need to be =
written and maintained as well.
Syntactic sugar might still be a good thing, but then it has to be a =
common annoyance for developers; it doesn't make sense to enhance the =
feature with features that are seldomly used. This criterium IMO isn't =
the case here.
Dani=EBl
More information about the fpc-devel
mailing list