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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.10.2013, 14:23   #1  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от b_nosoff Посмотреть сообщение
Может все же
X++:
CLRenumerator   = methodInfo1.Invoke(CLRenumerable, nil);
Моя ошибка, Вы правы!

Цитата:
Сообщение от b_nosoff Посмотреть сообщение
А CLRInterop::isNull ошибается порой, известная тема...
Закоментировал проверку на Нулл, получаю ошибку на строке
X++:
CLRenumerator   = methodInfo.Invoke(CLRenumerable, nil);
Объект не инициализирован.

Последний раз редактировалось Cardagant; 28.10.2013 в 14:25.
Старый 28.10.2013, 15:28   #2  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Цитата:
Сообщение от Cardagant Посмотреть сообщение
Объект не инициализирован.
Попробуйте так:
X++:
enumerable = System.Type::GetType("System.Collections.IEnumerable");
чисто в порядке эксперимента
__________________
Axapta non erubescit
Старый 28.10.2013, 17:24   #3  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Благодарю Вас, b_nosoff
Вы мне очень помогли.

Привожу код рабочего метода, в котором получаю XML-текст первого документа.
Мне нужен цикл, его, естественно, доделаю.

Очень благодарен всем, кто помог!

docum - это класс документа, определённый в сборке (TMSoft.Gohub.Client.GohubDocument)

X++:
con = new TMSoft.Gohub.Client.GohubConnection("localhost", 20295);

CLRenumerable = con.QueryDocuments(0);
// Получить тип
//enumerable = CLRenumerable.GetType();
enumerable = System.Type::GetType("System.Collections.IEnumerable");

if (CLRInterop::isNull(enumerable)) // false
     throw error("null");

methodInfo = enumerable.GetMethod("GetEnumerator");

/*if (CLRInterop::isNull(methodInfo)) // true
     throw error("null");*/

CLRenumerator   = methodInfo.Invoke(CLRenumerable, nil);

if (CLRInterop::isNull(CLRenumerator))
     throw error("null");

enumerator  = System.Type::GetType("System.Collections.IEnumerator");

methodInfo = enumerator.GetMethod("MoveNext");

// Переход к первому элементу
b = methodInfo.Invoke(CLRenumerator, nil);
// считывание текущего элемента
if (b)
{
       // Сичтываю свойство с текущим документом
       ParameterInfo = enumerator.GetProperty("Current");
       // Получение текущего элемента
       docum = ParameterInfo.GetValue(CLRenumerator, nil);
       // ПОлучение документа в формате XML
       info(docum.GetXmlText());
}

Последний раз редактировалось Cardagant; 28.10.2013 в 17:40.
За это сообщение автора поблагодарили: Logger (5), MazZzDaI (1).
Теги
.net, generic

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ssmantha: Debugging .NET code called from X++ code in AX 2012 Blog bot DAX Blogs 1 11.11.2011 15:50
emeadaxsupport: When browsing AX 2009 Role Centers, you get an error: An unexpected error has occurred on systems with .NET Framework v4.0 installed Blog bot DAX Blogs 1 28.07.2010 08:24
AX.NET: интеграция .NET-приложений с Аксаптой и (будущие) возможности облачных вычислений gl00mie DAX: Программирование 2 23.04.2010 00:47
jinx: Microsoft Dynamics AX und .NET - Erstellen eines Termins in Outlook Blog bot DAX auf Deutsch 0 03.11.2007 00:33
Inside Dynamics AX 4.0: Working with the .NET Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15

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

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

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