Proposal: user defined attributes

deadalnix deadalnix at gmail.com
Tue Mar 20 15:22:29 PDT 2012


Le 18/03/2012 05:49, Walter Bright a écrit :
> On 3/17/2012 9:12 PM, F i L wrote:
>> Walter Bright wrote:
>>> I also do not get why per-instance attributes even exist, as I agree
>>> that's
>>> what fields are for.
>>
>> Attributes are per-type (type properties, methods, etc), not
>> per-instance, and
>> only accessible (in C#) through type reflection (to my knowledge).
>> According to
>> http://msdn.microsoft.com/en-us/library/z919e8tw(v=vs.80).aspx
>> attribute objects
>> aren't constructed until reflected upon.
>
> My impression is it is just obfuscation around a simple lazy
> initialization pattern.
>
> While I can see the abstraction usefulness of compile time attribute
> metadata, I am having a hard time seeing what the gain is with runtime
> attributes over more traditional techniques.

The attribute itself doesn't do anything at runtime. But the attribute 
should be able to modify what is qualified before it is compiled.

With that model it is much simpler, it open the door to AOP, and it 
allow us to implement as lib many feature that would have required 
compiler support before.

AS mentioned deprecated, synchronized and override (including the recent 
propagation of @safe, pure, nothrow that have made so much noise) could 
have been implemented with no compiler changes with a good 
@property/@annotation support. This tells us quite a lot about its 
usefulness and how much powerful it is.

Probably as powerful as templates are, and close to nuclear power 
combined with template.


More information about the Digitalmars-d mailing list