Каким образом на стороне .Net можно создать объект таким образом, чтобы после получения его из COM компонента можно было бы обращаться к свойствам возвращенного объекта на JavaScript.
Нравится
Спасибо, Павел! Но это не совсем то, что мне надо. Я уже имел похожую проблему с типом данных Scripting.Dictionary при разработке под C#, но она решилась подключением нужного пространства имен.
Думаю, что в .Net имеются типы данных аналогичные Object, которые позволят мне не создавать новый компонент под каждый мало-мальски сложный объект.
Похожий вопрос! Как из COM Объекта вернуть Array. Если создать Array на c# и вернуть его javascript, то отсутствует свойство lenght.
Геннадий, а тип массив? Если да, то свойство length (либо метод size()) автоматом сгенерируются.
При обращении array.length - ошибка?
Массив создаю под .NET сл. образом (более сложные коллекции пробовал, но это полный фейл):
var Array = new object[size];
затем определяю набор значений для моего Array и записываю в свойство, которое будет доступно из COM объекта.
В JavaScript отладчик для Array.lenght определяет и тип и значение = undefined. А для самого массива тип определен как: "Массив Variant". В качестве значения показывает - {...} указывая на то, что это объект.
Вот это Вам должно помочь:
Пробовал создавать индексатор сразу же после того как ничего не получилось с прямой передачей массива. К сожалению не помогло. Сейчас чтобы упростить пример попробовал вставить код по ссылке, но результат тот же.
Индексатор на стороне JavaScript не откликается на обращение типа
... var Value = Obj[i]; ...
Поскольку кому-то ваш пример помог делаю вывод, что либо проблем в версии (у меня - 3.2.0.86), либо в прямизне рук. Кстати, если важно, то ОС - Windows 7.
А если так:
var Value = Obj.Items(1); var Value = Obj.Items[1]; var Length = Obj.Items.length;