В принципе согласен:
Вариант 1. Мы инопланетяне, прилетевшие с планеты где не знают про RunBase и SysOperation
Для
SysOperation нам надо посмотреть:
- перекрестные ссылки на метод
- перекрестные ссылки на DictClass.callObject
- и на \System Documentation\Classes\xApplication\runAsync
- и использование ключевого слова runAs
Для
RunBase:
- перекрестные ссылки на MyClass.run
- перекрестные ссылки на RunBase.run
Собственно это проблема примерно одна и та же - наличия полиморфизма + передача по ссылке.
(представь себе, если б в runbase был метод
X++:
void startOperation()
{
if (this.prompt)
{
this.run();
}
}
)
НО!
В данном случае это проблемой не является - так как я вижу вызов startOperation сразу же за созданием контроллера и мне не важно где происходит кокретный callObjectMethod.
В-общем, это проблема полиморфизма + передачи ссылок. Только в случае runBase исследование кода легче для инопланетянина за счет того, что методы, которые планируются вызвать через RunBase явно принадлежат его подклассам.
Для неинопланетянина это примерно одно и то же для обоих фреймворков.
Пример прицепил (для нагладности запуск поместил в отдельный класс).