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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.11.2015, 17:19   #1  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Как сделать фабрики NodeContract* защищенными для всех, кроме NodeCreator*?
Понятно, что можно просто описать особенности в какой-то документации, но хотелось бы это реализовать на уровне кода.
Есть какие-то идеи?
сейчас не проверял, но как мне помнится DictClass.makeObject() на модификаторы доступа не смотрит. Т.е. сделать protected new () у NodeContract, а создавать их через фабрику в NodeCreator используя DictClass.makeObject()

Насколько допустимо пользоваться отражением и "особенностями" его работы решайте сами
За это сообщение автора поблагодарили: Raven Melancholic (10).
Старый 07.11.2015, 18:20   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,984 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от db Посмотреть сообщение
сейчас не проверял, но как мне помнится DictClass.makeObject() на модификаторы доступа не смотрит. Т.е. сделать protected new () у NodeContract, а создавать их через фабрику в NodeCreator используя DictClass.makeObject()

Насколько допустимо пользоваться отражением и "особенностями" его работы решайте сами
Но ведь такой же способ может применить и тот код от которого хотят защититься.
За это сообщение автора поблагодарили: Raven Melancholic (2).
Старый 07.11.2015, 21:29   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Logger Посмотреть сообщение
Но ведь такой же способ может применить и тот код от которого хотят защититься.
В топике я просто не полностью описал все подробности использования. В данном случае, мне нужно просто ограничить некоторые возможности для обычного использования/расширения классов. Если же кто-то начинает использовать отражение, то, наверное, он понимает что делает и сделает все как нужно.
Так что использовать отражение вполне можно, но как-то не совсем "душа лежит" к этому. Хотелось бы декларативно это сделать ,чтобы впоследствии те ,кто будет использовать классы сразу видели, что "вот оно как".
Старый 07.11.2015, 21:19   #4  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от db Посмотреть сообщение
создавать их через фабрику в NodeCreator используя DictClass.makeObject()
Ну new я, как правило, и так делаю protected. Более того, если для создания класса нужны (или по логике работы и предполагаемого дальнейшего расширения класса они могут понадобится) параметры, то и construct я так же защищаю, а предоставляю некие методы фабрик newЧегоТоТам.
Вообще, для решения моей задачи использование DictClass для создания объекта класса контракта в создателе идея неплохая. Только тогда побоку идут перекрестные ссылки, и BP начнет ругаться, что класс не используется ни прямо ни косвенно. Обойти и то и другое можно (например, в нужном создателе использовать в каком-то месте classStr(НужныйКонтракт)). В общем, спасибо за идею, если не найдется других возможностей, то такой подход неплохой кандидат.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Иерархия классов, как обновить? Raven Melancholic DAX: Программирование 3 11.05.2015 19:49
Сделать левый join или сделать динамическую группировку в GRID kadet DAX: Программирование 10 12.03.2013 12:07
В DAX2009 забыли сделать сторно по проектам через журнал ГК. Pustik DAX: Программирование 1 05.03.2011 00:07
Как сделать фильтр по группе пользователей? Zabr DAX: Программирование 12 08.04.2009 11:40
Заумный отчет по ОС, как сделать? Бриллиантик DAX: Программирование 13 09.07.2008 16:36

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

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

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