AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.05.2017, 11:15   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
- "Вызывать класс напрямую - это моветон"
- "Info.add" это вызов класса
=> просто писать info.add это моветон.
Я прошу показать бон тон.
Макс, я в прошлый раз промолчал. Но раз ты настаиваешь...

info.add - это вызов метода класса через глобальную переменную infolog.
в аксапте есть три общеизвестных глобальных предопределенных переменных - infolog, session, appl.
ты точно хочешь продолжать защищать технологию атрибутов именно на этом примере?

если хочешь продолжать, то обрати внимание, что метод info.add по идее должен был бы быть protected + нужно было бы объявлять friend классы (error, warning, info) для доступа к add. но в аксапте нет friend.
Поэтому используется соглашение, что разработчики НЕ вызывают info.add, а должны пользоваться статическими методами Global::error, Global::warning, Global::info.

Поэтому приведенный тобой пример предельно НЕ типичен для обычной работы обычных людей...

Макс, я повторю вопрос - ты точно настаиваешь на этом примере в качестве обоснования технологи атрибутов?

=====================
А бон тон очень просто - класс, у которого есть статический метод main с арзументом Agrs. для такого класса должен быть создан menuItem. вызвать класс через стандартную конструкцию
new MenuFunction(menuitemDisplayStr(myMenuItem), MenuItemType::Display).run(args)

К сожалению, среди разработчиков МС не принято беспокоится о правах доступа, поэтому часто вызывают класс напрямую через конструктор + run. Этот способ не назвать бон тоном, но по факту игнорировать этот способ нельзя - нужно думать о нем и поддерживать его тоже.

Цитата:
Сообщение от belugin Посмотреть сообщение
Вариант 1. Унаследоваться и перекрыть необходимые методы. В случае, если проверка прав не проходит, вызывать методы предка. Case при создании заменить на SysExtension.

Вариант 2: Использовать SysIConditionalExtension
Макс, а можно проектик? Все участники тебе спасибо скажут. Особенно те, кто интересуется акс7, но у них еще нет возможности попробовать аксапту вживую.

Ты же сам сказал, что это "просто проставить атрибуты"


Цитата:
Сообщение от belugin Посмотреть сообщение
Не говорю - это часть другой дискуссии - запирать код или нет. Это оотогональное решение.
Согласен. Поэтому никаких ограничений на final и protected - да, их придется учитывать разработчикам на клиенте и заказчике. Но, согласен, это отдельная ветка обсуждения. Поэтому в этой ветке пропускаем.


Цитата:
Сообщение от belugin Посмотреть сообщение
1) Выше ссылка на пост Вани о том как использовать конструкторы.
2) Без конструкторов легко как и практически во всех компонентный моделях (метод init - те же самые RunBase получают параметры не из конструктора)
Мы все читать умеем. И все про конструкторы прочитали. С момента выхода статьи прошло несколько лет, поэтому время было.

Обрати внимание, что во всех статьях на эту тему рассматривается плоское одноуровневое наследование, а я спрашиваю про иерархию классов. Людям тоже придется иметь дело с иерахиями - их много в стандартной аксапте, их много в кастомизациях. Я думаю, что все уже давно увидели эту разницу и с нетерпением ждут ответа. Уверен, что ты легко приведешь изящный способ.

Также обрати внимание, что ты отвечаешь про конструкторы.
людям же нужно добавить функциональность, которую могут использовать пользователи.

Нет, Макс, это не одно и то же.
Нет, участники, это не придирка с словам и правописанию.

Итак, формулировка:
Цитата:
Сообщение от mazzy Посмотреть сообщение
Просто продемонстрируйте проектик с добавленной функциональностью, которую могут использовать пользователи со специальными правами,
в которой используется мощнейшая технология атрибутов и SysExtensionAppClassFactory::getClassFromSysAttribute.

Ведь это ж "просто пометить атрибутом".
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 31.05.2017 в 11:28.
Теги
sysextension framework, sysoperation framework, как правильно, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stephenmann: Technical History of Dynamics AX - From Axapta 3.0 to AX2012 Blog bot DAX Blogs 5 03.03.2017 10:22
dynamicsax-fico: Invoice search AX2012 vs. AX7 (Part 2) Blog bot DAX Blogs 0 01.04.2016 10:11
DAX2009 аналог friend классов. Как сделать? Raven Melancholic DAX: Программирование 9 07.11.2015 23:50
emeadaxsupport: Inventory closing differences between AX4.0 and AX2012 using weighted average costing method Blog bot DAX Blogs 0 27.12.2012 19:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:27.