18.04.2007, 13:11 | #1 |
Участник
|
А вот как заимплементить Enumerator
Сделал класс, который инкапсулирует перебор по маске:
X++: static void Test_SYS_FileEnumerator(Args _args) { SYS_FileEnumerator i=new SYS_FileEnumerator(@'c:\*'); ; while (i.moveNext()) { info(i.fileName()); } } Как это побороть? |
|
18.04.2007, 15:46 | #2 |
Administrator
|
Откомпилировалось без проблем. 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 |
Участник
|
KR2 - не компилится
(правильно ои я понял, что вы 1. Раскоментили "implements Enumerator" 2. Скомпилировали джоб |
|
18.04.2007, 16:30 | #4 |
Administrator
|
Нет, поторопился я. Не компилируется.
В качестве воркэраунда, вроде бы, срабатывает создание интерфейса, который расширяет 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 |
Участник
|
спасибо, как-нибудь попробую...
|
|
18.04.2007, 17:05 | #6 |
Участник
|
Только не проверяется на реализацию методы унаследованного интерфейса (Enumerator).
Да и прямая передача экземпляра класса как типа Enumerator не прокатывает - ругается
__________________
Axapta v.3.0 sp5 kr2 |
|
18.04.2007, 17:09 | #7 |
Administrator
|
А куда Вы его передаете, если не секрет?
__________________
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 |
Участник
|
Если это ко мне вопрос, то к примеру, так
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 |
Участник
|
Да. интерфейсы в аксапте хромают....
|
|
18.04.2007, 20:20 | #10 |
Участник
|
Цитата:
PS Точнее, не совсем так. Экземпляр с типом IEnumerator можно присвоить переменной с типом Enumerator
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 18.04.2007 в 20:24. |
|
19.04.2007, 16:51 | #11 |
Участник
|
class SysMenuEnumerator //implements Enumerator
{ ... на sys слое у меня так, у кого-то тоже не получилось |
|
20.04.2007, 15:28 | #12 |
Участник
|
dictClass = new DictClass(classnum(Enumerator)),
dictMethod = dictClass.objectMethodObject(), и dictMethod.returnType() для definitionString возвращает string, то есть реализовывать нужно str N definitionString() |
|
|
За это сообщение автора поблагодарили: belugin (5). |
20.04.2007, 15:44 | #13 |
Участник
|
а чему равно N?
|
|