Runtime reflection idea

Adam D. Ruppe destructionator at gmail.com
Thu May 30 11:01:16 PDT 2013


On Thursday, 30 May 2013 at 17:24:15 UTC, Steven Schveighoffer 
wrote:
> If you wanted to add interfaces, would you have to modify 
> object.d?

Yeah, but that's not something you'd have to do since you can 
just subclass it and add whatever you want there.

class MyThing: Reflectable {
   blah whatever;
}

@CustomTypeInfoExtension(new MyThing())
class Test {}


auto info = typeid(Test).rtInfo();
foreach(item; info.customItems)
    if(auto c = cast(MyThing) item) {
     // use c
    }


Or maybe we could implement it like:

MyThing c = typeid(Test).rtInfo().getCustomItem!MyThing();


which could perhaps be used with any type. You could also get 
compile time info on it easily enough:

class MyThing(T) : Reflectable {}

@CustomTypeInfoExtension(new MyThing!Test())
class Test {}


More information about the Digitalmars-d mailing list