I need to give a class C, read all user-defined members of it, both name and value dynamically. for example:

class C {
  string a;
  string b;
  string c;
}

then

Class c = new C();
// set c members...
enum string[] members = [__traits(allMembers, C)];
foreach(string member; members) {
        string value = __traits(getMember, c, member);
        doSomething(member, value);
}

I get this error:

Error: variable member cannot be read at compile time
Error: string expected as second argument of __traits `getMember` instead of `__error`

why can't member in foreach(string member; members) be read at compile time? I've also tried

foreach(enum string member; members)
and
static foreach(string member; members)

but it result a lot of error messages.



Reply via email to