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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2017, 16:14   #1  
online
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
677 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
Ну... если бы приперло, то пришлось бы делать что-то в духе исходного поста.
но считаю это запредельным говнокодом ...
и уж точно не привел бы такой код в качестве примера
у меня по программированию в универе была "четвёрка", так что сорян.
можешь вкратце набросать бриллиантово-чистый пример?

Цитата:
Сообщение от mazzy Посмотреть сообщение
фиг с ним, что нет каста, фиг с ним что нет проверок.
но РЕКОМЕНДОВАТЬ использовать ЭТО для ОБМАНА штатного валидатора?...
именно в этом и задача. ещё раз: как бы ты решил эту задачу?

Цитата:
спасибо за ссылку. не понял, как это относится к нашему топику. впрочем, там и без меня уже каментов насыпали.

я чувствую, эмоции тебя переполняют - поверь, меня тоже. но прошу, давай отвлечёмся от критики чистого разума и морального закона внутри нас и вернёмся к нашим баранам.
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: Link (1).
Старый 04.10.2017, 16:22   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
можешь вкратце набросать бриллиантово-чистый пример?
именно в этом и задача. ещё раз: как бы ты решил эту задачу?
Я не знаю как правильно решить поставленную задачу в поставленных условиях.
Я бы изо всех сил постарался изменить формулировку задачи. Я бы постарался донести последствия силового решения. Если бы мои уговоры не сработали, то практическое решение было бы похоже на то, что приведено в блоге - стиль "сломать через колено".

Но мне чертовски не нравится что система вынуждает писать именно так.

Мне чертовски не нравится, что через несколько лет придется с последствиями решений, которые были сделаны в таком стиле.

А еще больше мне не нравится, систему сейчас делают такой совершенно конкретные люди. И они это делают точно не со зла.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 04.10.2017 в 16:24.
Старый 04.10.2017, 16:33   #3  
online
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
677 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я не знаю как правильно решить поставленную задачу в поставленных условиях.
практическое решение было бы похоже на то, что приведено в блоге...
ок, формальное одобрение верховного жреца всё же получено.

как смотришь на то, чтоб убрать весь "эмоциональный шум" из этой ветки? так чтоб читатели могли выцепить суть, не отвлекаясь на "куда катится этот мир".
__________________
Felix nihil admirari
Старый 04.10.2017, 16:40   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
ок, формальное одобрение верховного жреца всё же получено.
это не одобрение )

Цитата:
Сообщение от wojzeh Посмотреть сообщение
как смотришь на то, чтоб убрать весь "эмоциональный шум" из этой ветки? так чтоб читатели могли выцепить суть, не отвлекаясь на "куда катится этот мир".
удалять документы? )))))

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

дело в том, что я не вижу никакого эмоционального шума в этой ветке.
я вижу обсуждение на нескольких уровнях восприятия для разных категорий читателей.
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 16:46   #5  
online
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
677 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
это не одобрение )


удалять документы? )))))

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

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

я именно такой пост в оригинале и создал - с выжимкой.

полностью согласен с вашими оценками о том, что в идеальном мире за такое бы сразу в адъ. но мы уже в аду.
__________________
Felix nihil admirari
Старый 04.10.2017, 19:46   #6  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от wojzeh Посмотреть сообщение

я именно такой пост в оригинале и создал - с выжимкой.

полностью согласен с вашими оценками о том, что в идеальном мире за такое бы сразу в адъ. но мы уже в аду.
pre()>Save
standard method()
post()>Restore

В принципе это самый что ни на есть workaround. Который великолепен если его воспринимать именно как workaround.

А есть какой-то способ избежать вызова "standard method()" или подменить его?
И интересно почему, если это в любом случае ад, не хотят давать возможность такого полного перекрытия? Ведь для этого не нужен именно overlay сверху, можно overlay и сбоку.

Как понимаю ce.CancelSuperCall() помогает избежать вызов двух форм и добавили это как фикс, а не как часть общего дизайна.
Старый 04.10.2017, 20:30   #7  
online
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
677 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
у них на выходе всё в порядке!

Нажмите на изображение для увеличения
Название: проблема.png
Просмотров: 325
Размер:	126.1 Кб
ID:	11672
__________________
Felix nihil admirari
Старый 04.10.2017, 21:20   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
И интересно почему, если это в любом случае ад, не хотят давать возможность такого полного перекрытия? Ведь для этого не нужен именно overlay сверху, можно overlay и сбоку.
как я понимаю. Общая задача осуществить механизм безболезненных обновлений.

Предположим, у вас есть метод X класса Y у метода есть его публичный интерфейс:
  • предусловия
  • постусловия
  • инварианты

И есть реализация (например он может изменить приватную переменную невидимую снаружи). Если расширения смогут отменять вызов какого угодно метода, то состояние объекта может быть испорчено. Так как ваше расширение не может учесть внутреннее состояние объекта будущих версий.

Например в версии 1 вы написали расширение отменяющее вызов метода x целиком и как-то сымитировали его работу без того, что нам надо.

И есть реализация (например он может изменить приватную переменную невидимую снаружи). Если расширения смогут отменять вызов какого угодно метода, то состояние объекта может быть испорчено. Так как ваше расширение не может учесть внутреннее состояние объекта будущих версий.

Например в версии 1 вы написали расширение отменяющее вызов метода x целиком и как-то сымитировали его работу через публичный интерфейс.

В версии 1 sp 1 внутрь добавили кеш, которое ваше расширение обновить не может (не только потому, что оно не может модифицировать приватные поля, но и потому, что оно написано для версии 1, про sp1 не знает) в результате остальные методы класса берут данные из кеша устаревшие.

Собственно, если сделать подмену произвольного метода, то это и будет практически оверлееринг, но без удобного способа смотреть изменения.

Последний раз редактировалось belugin; 04.10.2017 в 21:23.
Старый 04.10.2017, 21:55   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от ax_mct Посмотреть сообщение
А есть какой-то способ избежать вызова "standard method()" или подменить его?
Ждите Platform Update 11 который скоро появится
За это сообщение автора поблагодарили: ax_mct (11).
Старый 04.10.2017, 22:04   #10  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от ax_mct Посмотреть сообщение

А есть какой-то способ избежать вызова "standard method()" или подменить его?
Есть :
X++:
[ExtensionOf(classStr(Class1))]
final public class Class1_Extension
{
    public void run()
    {
        try
        {
            if (true)
            {
                throw Exception::Error;
            }
            next run();
        }
        catch (Exception::Error)
        {
            info('Done!');
        }
    }
}
Такое же эксплуатирование деталей (кривых) реализации как и в этом блоге. В любой момент починят (или поменяют реализацию XppPrePostArgs) и все развалиться к чертям, но кого это останавливает ?

Я так и не понял из ответов выше, зачем все это если есть CoC или просто автор еще про нее не узнал?

Последний раз редактировалось skuull; 04.10.2017 в 22:19.
За это сообщение автора поблагодарили: kashperuk (5), EVGL (10), trud (6), Link (1).
Старый 04.10.2017, 16:48   #11  
online
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
677 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
Но мне чертовски не нравится что система вынуждает писать именно так.

Мне чертовски не нравится, что через несколько лет придется с последствиями решений, которые были сделаны в таком стиле.

А еще больше мне не нравится, систему сейчас делают такой совершенно конкретные люди. И они это делают точно не со зла.
Aye, Sir!
__________________
Felix nihil admirari
Старый 04.10.2017, 16:54   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
все - не хорошее слово.
как только появляется слово все - жди логических ошибок )))

http://coub.com/view/vqeal
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 16:28   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
именно в этом и задача. ещё раз: как бы ты решил эту задачу?
и обрати внимание на то, что сказал Макс Белугин
D365: passing through public method by means of Pre- and Post-event handlers

это штатные способы, ожидаемые и предполагаемые Майкрософтом.
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2017, 16:44   #14  
online
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
677 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
и обрати внимание на то, что сказал Макс Белугин
D365: passing through public method by means of Pre- and Post-event handlers

это штатные способы, ожидаемые и предполагаемые Майкрософтом.
первое, что я делаю в любой ветке - читаю, что говорит макс. серьёзно.

поправь меня, если я неправ, но именно это я и сделал:
Воспользоваться какой-то точкой расширения для убирания функционала (не участка кода)
стандартный код остался на месте, и главное, любые будущие его изменения нас не колышат.
__________________
Felix nihil admirari
Теги
chain of command, extensions

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
sertandev: AX7 Extensibility – Part 3 : Event handlers and delegates (hooks) Blog bot DAX Blogs 0 28.08.2017 19:11
ievgensaxblog: D365O. Trick to pass a value between Pre and Post event handler using XppPrePostArgs. Blog bot DAX Blogs 0 01.07.2017 10:13
How to cancel method execution in pre-event handler alicedr DAX: Программирование 6 01.01.2017 15:33
newdynamicsax: Pre / Post handlers and kernel classes. Blog bot DAX Blogs 0 25.04.2016 15:11

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

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

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