On Tuesday, 28 June 2016 at 04:37:34 UTC, Adam Sansier wrote:
Hi,
I have designed a class based system that involves
self-delegation instead of override.
It is similar to event based programming.
I have defined an event as a container type that holds
functions(or possibly delegates, but the desire is to avoid
them).
Hi Adam,
The easiest way to enforce calling of base class's method is to
make it final and to offer additional functionality only in an
optional extra method:
class Base
{
alias EventMethod = void function(Base _this);
public Event!EventMethod MyEvents
final public MyEvent()
{
// Go ahead and inform subscribed handlers
MyEvents(this);
EventExtras(this);
}
protected void EventExtras() {} // empty in the base class
}
class Derived : Base
{
protected override void EventExtras()
{
// This does not need to call super.MyEvent
// Other work done here.
}
}
Does this help?