Здравствуйте, Damat_AE, Вы писали:
D_A> полностью типизированные методы
Вы хотите спросить почему используется обобщённый механизм посылки сообщений вместо механизма вызова соответствующих методов?
Ответ простой: добавить новый метод в уже опубликованный интерфейс нельзя, а добавить новый тип сообщения — запросто.
TYPE MyMessage = RECORD (Message) ... END;
VAR myMsg: MyMessage;
...
obj.Handle(myMsg);
Все старые модули при этом перекомпилировать не надо.
Построение систем на основе обобщённого механизма транспорта сообщений — самый простой способ построения расширяемых систем.
D_A> кишит операциями приведения типов — признак плохого дизайна.
Это Вы о чём?
D_A> потому что наследование нужно использовать осторожно — в шарпе нет множественного, а вдруг реально понадобится по смыслу пронаследоваться.