Search code examples
oopinheritancereflectiond

Dlang: get names of all superclasses for an instance as array


I can get the full class name of an instance with fullyQualifiedName, but how can I get the fullyQualifiedNames of all it's superclasses? Is it possible?


Solution

  • Use std.traits.BaseClassesTuple.

    import std.traits, std.stdio, std.meta;
    
    class A {}
    class B: A{}
    class C: B{}
    
    void main(){
        auto instance = new C;
        static foreach(T; AliasSeq!(typeof(instance), BaseClassesTuple!(typeof(instance))))
            writeln(fullyQualifiedName!T);
    }