Привет.
Хочется из JScript'а использовать метод .net-класса, который бы возвращал массив объектов (причем объектов специального типа, а не object).
Написал так:
public TestResult[] GetArray()
{
return new TestResult[] {new TestResult()};
}
JScript (var ar = new VBArray(test.GetArray()).toArray();) ругается, что invalid typecast.
Если изменить у метода возвращаемое значение с TestResult[] на object[], то все работает, но этот вариант неприемлем.
Если методу добавлять атрибуты
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_VARIANT)]
или
[return: MarshalAs(UnmanagedType.SafeArray, SafeArrayUserDefinedSubType=typeof(TestResult))]
То ничего не меняется.
Как это можно побороть?
Заранее благодарен.
Здравствуйте, Григорий Поваров, Вы писали:
ГП>Привет.
ГП>Хочется из JScript'а использовать метод .net-класса, который бы возвращал массив объектов (причем объектов специального типа, а не object).
ГП>Написал так:
ГП>ГП> public TestResult[] GetArray()
ГП> {
ГП> return new TestResult[] {new TestResult()};
ГП> }
ГП>
ГП>JScript (var ar = new VBArray(test.GetArray()).toArray()
ругается, что invalid typecast.
ГП>Если изменить у метода возвращаемое значение с TestResult[] на object[], то все работает, но этот вариант неприемлем.
Обычный JScript, не .NET, не поддерживает такой тип данных.
Попробуйте в TestResult реализовать поддержку IDispatch и отдавать SAFEARRAY(IDispatch).