Metaprogramming with traits

Gary Willoughby via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Sep 15 08:56:56 PDT 2016


On Thursday, 15 September 2016 at 15:07:09 UTC, Ram_B wrote:
> How i can get fields of derived classes in runtime? This not 
> works

What about something like this:

import std.traits;
import std.stdio;

class A {
	int a,b;
	this(){}
	void fields(this T)(){
         writeln(FieldNameTuple!(T));
         foreach(Class; TransitiveBaseTypeTuple!(T)) {
             writeln(FieldNameTuple!(Class));
         }
	}
}

class B : A{
	int c;
	this(){}
}

class C : B{
	int d;
	this(){}
}
void main(){
	C c = new C();
	c.fields();
}


More information about the Digitalmars-d-learn mailing list