How to dynamically call class virtual method dynamically

Frustrated Who at where.com
Tue Apr 1 00:31:41 PDT 2014


Basically in programming to interfaces I need to decide to call a 
virtual method of an object if it exists else call a final method 
in the interface:

interface A
{
     static final void foo() { ... }
}

class B : A
{
     void bar() { ... }     // optional
}

class C : B
{
     void bar() { ... }     // optional
}

void main()
{
     A a = new B;  // or new C;

     // if a.bar exists call it, else call foo
     // code should work independent of the classes. (there might 
be more)
}

The point of the code is simply to allow the class to implement 
bar optionally but provide default behavior with foo. I need a 
way to dynamically determine if bar exists and fall back on foo. 
This should be possible.

e.g., suppose

class B : A { }

then I would like to b.bar() to actually call A.foo() (since bar 
doesn't exist in b).

I guess the exist way would be to create an opDispatch and have 
it call foo if bar is passed. This works great and does 
everything I need it to except requires adding the code in the 
class which I can't have. Also I'm not sure how it would work 
with virtual methods.

I've tried using hasMember but since my object is cast to a type 
of Object it never works.







More information about the Digitalmars-d-learn mailing list