|
|
#1 |
|
Участник
|
Передача массива в Net
Коллеги, нужна помощь.
Есть некий метод класса написанного на C#, данный метод принимает массив guid[]. Вопрос в том как из DAX передать такой параметр в этот метод, я уже все перепробовал не хочет он понимать. |
|
|
|
|
#2 |
|
Участник
|
В каком месте у вас начинаются поблемы? на стороне аксапты или на стороне дотнета?
Через NetBusinessConnector получить CLRObject, созданный в Аксапте |
|
|
|
|
#3 |
|
Участник
|
На стороне DAX. Попробовал все варианты, все время пишет "Класс не содержит этой функии"
Последний раз редактировалось maldini; 23.11.2013 в 12:37. |
|
|
|
|
#4 |
|
Участник
|
Выложите пример неработающего кода
|
|
|
|
|
#5 |
|
Участник
|
Вот пример кода на C#
X++: public StatusingAssignmentsDataSet ReadAssignments(Guid[] assnUIDs) { return (StatusingAssignmentsDataSet) base.Invoke("ReadAssignments", new object[] { assnUIDs })[0]; } X++: Statusing.StatusingDataSet AssignmentsDat;
Array guids = new Array(Types::Guid);
;
dataStoreEnum = ClrInterop::parseClrEnum('NV.Project.DataStoreEnum', 'PublishedStore');
projUIDLocal = str2guid(#projGuid);
projectDataSet = new NV.Project.ProjectDataSet();
projectDataSet = project.ReadProject(projUIDLocal,dataStoreEnum);
assigmentTable = projectDataSet.get_Assignment();
assigmentRow = assigmentTable.get_Item(1);
guids.value(1,assigmentRow.get_ASSN_UID());
AssignmentsDat = statusing.ReadAssignments(guids); // Вот тут ошибка, я уже разные варианты попробовал,
statusingПоследний раз редактировалось Dron AKA andy; 25.11.2013 в 17:11. Причина: убрал по просьбе автора |
|
|
|
|
#6 |
|
Участник
|
Проблема появляется только для этого метода, который принимает Guid[]? Скажем, если временно изменить тип параметра на другой, то ошибка пропадет?
|
|
|
|
|
#7 |
|
Участник
|
|
|
|
|
|
#8 |
|
Участник
|
Так тоже наверное пробовали?
X++: //Array guids = new Array(Types::Guid); System.Guid[] guids = new System.Guid[1](); В качестве эксперимента. Если объявить метод вот так Код: public StatusingAssignmentsDataSet ReadAssignments(Object assnUIDs) |
|
|
|
|
#9 |
|
Участник
|
Цитата:
Два дня я бился с этой проблемой в итоге сделал свою библиотеку в которой вызвал нужные мне методы. А свою библиотеку вызвал в DAX. Но как без этих танцев обойтись очень интересно. Последний раз редактировалось maldini; 23.11.2013 в 16:40. |
|
|
|
|
#10 |
|
Участник
|
Забыл уточнить что система DAX 4, видимо в ней нельзя объявить переменную подобную этой, так как в DAX 2009 без проблем.
X++: System.Guid[] |
|
|
|
|
#11 |
|
Участник
|
Цитата:
X++: System.Type type;
System.Object guids;
type = System.Type::GetType("System.Guid[]");
guids = System.Activator::CreateInstance(type); |
|
|
|
|
#12 |
|
Участник
|
Пишет что ошибка вызова статического метода. Вот засада.
Последний раз редактировалось maldini; 24.11.2013 в 23:15. |
|
|
|
|
#13 |
|
Участник
|
Вот здесь написано что Guid в X++ это тоже самое что и System.Guid в Net http://msdn.microsoft.com/en-us/libr...(v=ax.10).aspx
Что если попробовать просто X++: Guid[] guids |
|
|
|
|
#14 |
|
Участник
|
Цитата:
Сообщение от S.Kuskov
Вот здесь написано что Guid в X++ это тоже самое что и System.Guid в Net http://msdn.microsoft.com/en-us/libr...(v=ax.10).aspx
Что если попробовать просто X++: Guid[] guids X++: Guid guids[] Последний раз редактировалось maldini; 25.11.2013 в 00:15. |
|
|
|
|
#15 |
|
Участник
|
|
|
|
|
|
#16 |
|
Участник
|
Да создается System.Guid[] но при вызове функции та же ошибка "Класс не содержит эту функцию." Может проблема в самой функции
|
|
|
|
|
#17 |
|
Участник
|
|
|
|
|
| За это сообщение автора поблагодарили: maldini (1). | |
|
|
#18 |
|
Участник
|
Цитата:
Код: statusing.ReadAssignments(new Guid[1] { (Guid)row[prjDataSet.Assignment.ASSN_UIDColumn] }) |
|
|
|
|
#19 |
|
Читатель
|
Четверка не поддерживает объявление массивов через []. Попробуйте statusing присвоить переменной типа ClrObject, и уже у нее вызвать требуемый метод. А статические методы в четверке вызываются через CrInterop::staticInvoke().
|
|
|
|
|
|