Metaprogramming with traits

Ram_B via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Sep 15 13:42:55 PDT 2016


On Thursday, 15 September 2016 at 15:56:56 UTC, Gary Willoughby 
wrote:
> 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();
> }

Thanks very much! :3


More information about the Digitalmars-d-learn mailing list