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