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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.04.2007, 13:11   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
? А вот как заимплементить Enumerator
Сделал класс, который инкапсулирует перебор по маске:
X++:
static void Test_SYS_FileEnumerator(Args _args)
{
    SYS_FileEnumerator i=new SYS_FileEnumerator(@'c:\*');
;
    while (i.moveNext())
    {
        info(i.fileName());
    }

}
Если раскомментить у него implements enumerator, то он перестает создаваться, жалуясь на неопределенность definitionString.

Как это побороть?
Вложения
Тип файла: zip SYS_FileEnumerator.zip (930 байт, 65 просмотров)
Старый 18.04.2007, 15:46   #2  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Откомпилировалось без проблем. Axapta 3.0 Build #1951.7609 (то есть KR3).
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 18.04.2007, 15:51   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
KR2 - не компилится
(правильно ои я понял, что вы
1. Раскоментили "implements Enumerator"
2. Скомпилировали джоб
Старый 18.04.2007, 16:30   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Нет, поторопился я. Не компилируется.

В качестве воркэраунда, вроде бы, срабатывает создание интерфейса, который расширяет Enumerator (т.е., например, interface IEnumerator extends Enumerator)
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: belugin (5).
Старый 18.04.2007, 17:05   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
спасибо, как-нибудь попробую...
Старый 18.04.2007, 17:05   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Только не проверяется на реализацию методы унаследованного интерфейса (Enumerator).
Да и прямая передача экземпляра класса как типа Enumerator не прокатывает - ругается
__________________
Axapta v.3.0 sp5 kr2
Старый 18.04.2007, 17:09   #7  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
А куда Вы его передаете, если не секрет?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 18.04.2007, 17:26   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Если это ко мне вопрос, то к примеру, так
X++:
    Enumerator  e=new SYS_FileEnumerator(@'c:\*');
будет сообщение об ошибке.
Так же будет ошибка при передаче как параметра в метод, требующий тип Enumerator

Если преобразовывать через Object, то все пройдет на ура.
Так же можно использовать вложеную функцию для преобразования - тип параметра при компиляции не проверяется
X++:
    Enumerator  e;
    SYS_FileEnumerator i = new SYS_FileEnumerator(@'c:\*');
    Enumerator GetEnumerator(Enumerator intf)
    {
        ;
        return intf;
    }
    ;
    e = GetEnumerator(i);
__________________
Axapta v.3.0 sp5 kr2
Старый 18.04.2007, 17:41   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Да. интерфейсы в аксапте хромают....
Старый 18.04.2007, 20:20   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
В качестве воркэраунда, вроде бы, срабатывает создание интерфейса, который расширяет Enumerator (т.е., например, interface IEnumerator extends Enumerator)
А вообще, такое объявление ничем не отличается от простого interface IEnumerator.

PS Точнее, не совсем так. Экземпляр с типом IEnumerator можно присвоить переменной с типом Enumerator
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 18.04.2007 в 20:24.
Старый 19.04.2007, 16:51   #11  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
class SysMenuEnumerator //implements Enumerator
{
...
на sys слое у меня так, у кого-то тоже не получилось
Старый 20.04.2007, 15:28   #12  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
dictClass = new DictClass(classnum(Enumerator)),
dictMethod = dictClass.objectMethodObject(),
и dictMethod.returnType() для definitionString возвращает string,
то есть реализовывать нужно str N definitionString()
За это сообщение автора поблагодарили: belugin (5).
Старый 20.04.2007, 15:44   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
а чему равно N?
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ContainerIterator Андре DAX: База знаний и проекты 22 17.07.2008 14:29
Не создается экземпляр MapIterator greench DAX: Программирование 13 30.10.2007 17:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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