Показать сообщение отдельно
Старый 03.01.2020, 23:06   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
call stack parsing as condition for logic
столкнулся тут с необходимостью переписывать кучу стандартных классов, которые через private методы вызывают один public табличный метод, который я легко могу перекрыть. но! в этом методе отсутствует нужный мне аргумент, чтобы определять контекст. и пришла мне в голову шальная мысль, а что если анализировать call stack внутри этого табличного метода, вместо переписывания кучи классов?

X++:
...
        container myCallStack;
        int i;
        str whatToWrite;
        myCallStack = xSession::xppCallStack();
        for( i=1; i<=conlen(myCallStack); i++)
        {
            whatToWrite += conpeek(myCallStack, i);
        }

        if(callStackContainWhatINeed(whatToWrite))
        {
            doMyWhim();
        }
...
кто-нибудь делал такое? какие подводные камни?

с новым годом, кстати, всех, кто уже очнулся!
__________________
Felix nihil admirari