Прошу прощение за Офтоп, У меня недавно возникла необходимость сделать подобное, и все получилось, не так красиво как я бы хотел но все же:
X++:
class A
{
}
class B extends A
{
}
[ExtensionOf(classStr(A))]
final class A_Extension
{
public void salute()
{
switch (true)
{
case this is B:
B b = this ;
b.salute();
default :
info("A extension");
}
}
}
[ExtensionOf(classStr(B))]
final class B_Extension
{
public void salute()
{
info("B extension");
}
}
В идеале хотелось бы обойтись без упоминания конкретного наследника, через DictClass или что то подобное, но пока только так получилось.