Is it possible to use an UDA to generate a struct inside a class ?
    Basile Burg via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Tue Dec 30 09:42:37 PST 2014
    
    
  
I have a struct used to describe a property[1].
Its standard usage is represented in this simple example:
|class Bar {
|    private uint fField0;
|    private izPropDescriptor!uint descrField0;
|    this() {
|        descrField0.define(&field0, &field0, "field0");
|    }
|    public void field0(uint aValue) {fField0 = aValue;}
|    public uint field0(){return fField0;}
|}
The descriptor is used by a property binding system or a 
serializer.
The problem is that declaring a property descriptor is **very** 
repetitive.
I've always wanted to find a way to generate a descriptor 
automatically,
and finally today, while reading some random things on GH, I've 
"found" that
the annotation system used in HibernateD[2] could be used. So far 
I didnt get the point of UDA and never used them.
So I've created a basic UDA but, and then ? Can a descriptor be 
created using my "attribute" ? How ?
|struct Setter {
|    const char[] propertyName;
|}
|struct Getter {
|    const char[] propertyName;
|}
|class Foo {
|    private uint fField0;
|    public @Setter("field0") void field0(uint aValue) {
|        fField0 = aValue;
|    }
|    public @Getter("field0") uint field0(){
|        return fField0;
|    }
|}
------------------------
[1]:https://github.com/BBasile/Iz/blob/master/import/iz/properties.d#L27
[2]:https://github.com/buggins/hibernated/blob/master/source/hibernated/annotations.d#L15
    
    
More information about the Digitalmars-d-learn
mailing list