Показать сообщение отдельно
Старый 29.05.2017, 11:52   #18  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от ta_and Посмотреть сообщение
Где в теории ООП написано, что конструктор должен быть без параметров?!
В теории, разумеется, этого нет. Но Axapta - это не "теория". Это "экземпляр" теории Конкретная реализация, которая, разумеется, вводит свои собственные ограничения

Цитата:
Сообщение от ta_and Посмотреть сообщение
Совершенно не оправданное ограничение МС.
Приведите хотя бы один довод, почему в конструктор не должны передаваться параметры?
Оправдано, оправдано. Но! Не "вообще", а в конкретной реализации ООП в системе Axapta. Самый простой пример - пакетные задания (Batch) начинаются с того, что создают экземпляр класса через

classfactory.createClass(classId);

передача параметров здесь не предусмотрена "в принципе". Все "параметры" поднимаются из unpack уже "потом". После инициализации

Разумеется, пакетные задания - отдельный разговор, но, вообще-то, в Axapta довольно много разных обслуживающих процедур, которые требуют создание экземпляра класса для выполнения какого-либо анализа по структуре класса. Если у Вас в метод new передается какой-либо параметр, то есть риск получить Exception в момент создания экземпляра. Как следствие, весь функционал перестает работать

Собственно, сделайте поиск по перекрестным ссылкам, где используется хотя бы classfactory.createClass() не говоря уже о DictClass.makeObject(). Удивитесь как много подобных вызовов

Поэтому, чтобы не получить проблему "на ровном месте" в среде Axapta следует жестко придерживаться правила

Никаких параметров в методах new

Да, в большинстве случаев, у Вас проблем не будет, если Вы передадите параметр в new. Но однажды, в самый неподходящий момент, все "вдруг" перестанет работать
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: mazzy (10).