|
![]() |
#1 |
Участник
|
В теории, разумеется, этого нет. Но Axapta - это не "теория". Это "экземпляр" теории
![]() Цитата:
classfactory.createClass(classId); передача параметров здесь не предусмотрена "в принципе". Все "параметры" поднимаются из unpack уже "потом". После инициализации Разумеется, пакетные задания - отдельный разговор, но, вообще-то, в Axapta довольно много разных обслуживающих процедур, которые требуют создание экземпляра класса для выполнения какого-либо анализа по структуре класса. Если у Вас в метод new передается какой-либо параметр, то есть риск получить Exception в момент создания экземпляра. Как следствие, весь функционал перестает работать Собственно, сделайте поиск по перекрестным ссылкам, где используется хотя бы classfactory.createClass() не говоря уже о DictClass.makeObject(). Удивитесь как много подобных вызовов ![]() Поэтому, чтобы не получить проблему "на ровном месте" в среде Axapta следует жестко придерживаться правила Никаких параметров в методах new Да, в большинстве случаев, у Вас проблем не будет, если Вы передадите параметр в new. Но однажды, в самый неподходящий момент, все "вдруг" перестанет работать ![]()
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: mazzy (10). |
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
![]() Собственно, сделайте поиск по перекрестным ссылкам, где используется хотя бы classfactory.createClass() не говоря уже о DictClass.makeObject(). Удивитесь как много подобных вызовов
![]() Поэтому, чтобы не получить проблему "на ровном месте" в среде Axapta следует жестко придерживаться правила Никаких параметров в методах new Да, в большинстве случаев, у Вас проблем не будет, если Вы передадите параметр в new. Но однажды, в самый неподходящий момент, все "вдруг" перестанет работать ![]() а давайте вернемся к исходному вопросу? Цитата:
Сообщение от ta_and
![]() Здравствуйте.
У меня возникли чисто теоретические вопросы. 1. Какая цель создания экземпляров классов через расширенные атрибуты SysExtensionAppClassFactory::getClassFromSysAttribute( ? 2. Чем не устраивает старый дедовский способ construct ? 3. Как при создании экземпляра класса через расширенные атрибуты передать ему параметры в new? ПС. Я исхожу из принципа, что вызывающий класс и так ВСЕГДА должен знать какого наследника он создает. Зачем тогда городить огород и не вызывать просто создание нужного наследника? Типа свич лишний, давайте загрузим ядро, у него голова большая, пусть думает? Или у нас наследники классов растут как грибы, не успеваем исправлять конструктор, нужно через атрибуты это делать?... довести до ответов на исходные вопросы? |
|
![]() |
#3 |
Участник
|
И чтобы закрыть темы, прозвучавшие в этой ветке.
Цитата:
Сообщение от Владимир Максимов
![]() передача параметров здесь не предусмотрена "в принципе". Все "параметры" поднимаются из unpack уже "потом". После инициализации
... Собственно, сделайте поиск по перекрестным ссылкам, где используется хотя бы classfactory.createClass() не говоря уже о DictClass.makeObject(). Удивитесь как много подобных вызовов ![]() Поэтому, чтобы не получить проблему "на ровном месте" в среде Axapta следует жестко придерживаться правила Никаких параметров в методах new Да, в большинстве случаев, у Вас проблем не будет, если Вы передадите параметр в new. Но однажды, в самый неподходящий момент, все "вдруг" перестанет работать ![]() И параметры в new вполне предусмотрены (я не знаю почему только 5 параметров), и сам фреймворк, заменяющий технологию конструкторов, использует конструкторы... Но пост мне очень понравился. Поскольку проблема действительно была. Не знаю осталась ли она сейчас. Надо полагать, исправили. https://www.facebook.com/photosm/pho...type=3&theater Последний раз редактировалось mazzy; 01.06.2017 в 14:43. |
|
![]() |
#4 |
Banned
|
Охренеть. Switch case 1, 2, 3, 4, 5. Наверное когда додумаются передавать массив параметров (array[]) тогда оформят это патентом.
|
|
![]() |
#5 |
Участник
|
Цитата:
Тут более занимательный вопрос, а откуда эти самые параметры вообще взялись-то? Если "знают" какие параметры передавать, то должны и "знать" о каком классе идет речь. Тогда DictClass.makeObject() становится как-то неуместным. Проще уж собственно экземпляр класса создать и его использовать. Зачем явно лишняя "прослойка" ![]()
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 01.06.2017 в 19:10. |
|
Теги |
sysextension framework, sysoperation framework, как правильно, полезное |
|
|