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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.01.2008, 15:27   #15  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Код метода RunBase::getDescription
X++:
/*MAN
Returns a helptext of the class with the specified classId.
*/
client server static HelpTxt getHelpText(classId _classNum)
{
    ExecutePermission casPerm = new ExecutePermission();
    SysDictClass    classObj;
    str             staticName = identifierstr(helpText); // ***

    if (! _classNum)
        return '';

    classObj = new SysDictClass(_classNum);
    if (classObj.hasStaticMethod(staticName))
    {
        casPerm.assert();

        //BP Deviation Documented
        return classObj.callStatic(staticName);
    }
    else
        return '';
}
Код метода RunBase::getHelpText
X++:
/*MAN
Returns a helptext of the class with the specified classId.
*/
client server static HelpTxt getHelpText(classId _classNum)
{
    ExecutePermission casPerm = new ExecutePermission();
    SysDictClass    classObj;
    str             staticName = identifierstr(helpText); // ***

    if (! _classNum)
        return '';

    classObj = new SysDictClass(_classNum);
    if (classObj.hasStaticMethod(staticName))
    {
        casPerm.assert();

        //BP Deviation Documented
        return classObj.callStatic(staticName);
    }
    else
        return '';
}
Весь код в классах повторяется, только строчки выделенные тремя звездочками. Почему бы из не передавать в класс как аргумент?

А если таких методов будет сотня. Копировать все код сотню раз? Не лучше ли написать одну функцию наподобие такой:
X++:
client server static AnyType getProperty(classId _classNum, SysMethodName _methodName)
{
    ExecutePermission casPerm = new ExecutePermission();
    SysDictClass    classObj;

    if (! _classNum)
        return '';

    classObj = new SysDictClass(_classNum);
    if (classObj.hasStaticMethod(_methodName))
    {
        casPerm.assert();

        //BP Deviation Documented
        return classObj.callStatic(_methodName);
    }
    else
        return '';
}
И вызывать ее из кода:
X++:
RunBase::getProperty(classidget(this), identifierstr(helpText));
Т.е. в данном случае, это необходимо, если не охота дублировать код. Если же принципиально не использовать передачу функции, как аргумента, то этого можно избежать, конечно. Но за это придется поплотиться дублированием кода.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передача в Веб-форму объекта в качестве параметра IvanS DAX: Программирование 4 17.04.2008 15:07
Передача параметра laxer DAX: Программирование 2 19.01.2006 09:08
Передача массива как параметра DreamCreator DAX: Программирование 1 26.01.2005 16:58
Передача параметра из формы в отчет liza DAX: Программирование 1 29.09.2003 14:04
Передача параметра в репорт 2 Андре DAX: Программирование 1 29.08.2002 14:09

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

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

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