introspection experiment

Lloyd Dupont ld-REMOVE at galador.net
Tue Jun 14 05:46:43 PDT 2011


I'd like to explore my object's properties through some kind of 
introspection.
As object.getMembers()  always return null it feels like I will have to do 
it manually.
Thankfully someone pointed out to me that, with mixin and __trait I have 
powerful too to do so...

Anyway, I'm at the stage of handcrafted experiment.

Now I'm trying to (manually so far) write some method which can return any 
property through a name (code below)
but it fails because "Object" is not a catch all which can be int as well .. 
object!

How would you go about fixing, making the following code work?
(it doesn't work because ABC() can't become an 'object delegate()' but how 
would I make a generic method otherwise?)
==================================
class Foo
{
    immutable static members = [__traits(derivedMembers, Foo)];

    private int _abc;
    @property public int ABC() { return _abc; }
    @property public void ABC(int value) { _abc = value; }

    private Foo _foo;
    @property public Foo FOO() { return _foo; }
    @property public void FOO(Foo value) { _foo = value; }

    Object delegate()[string] getmembers;

    this()
    {
        getmembers["ABC"] = delegate Object() { return ABC(); };
        getmembers["FOO"] = delegate Object() { return FOO(); };
    }
}
================================== 



More information about the Digitalmars-d-learn mailing list