Можно ли получать пользовательские объекты общего типа через AMF? Я пытаюсь интегрировать приложение flex с существующим сервисом C #, но flex душит пользовательские объекты общего типа. Насколько я могу судить, Flex даже не поддерживает дженерики, но я хотел бы иметь возможность даже просто читать объект и приводить его члены по мере необходимости. Я просто хочу, чтобы flex игнорировал <T>
. Я надеюсь, что есть способ сделать это, так как flex не жалуется на типизированные коллекции (серверный вызов, возвращающий List, работает нормально, а flex преобразует его в ArrayCollection, как нетипизированный List).
Вот урезанный пример того, что происходит для меня:
Пользовательский класс с типом C #
public class TypeTest<T>
{
public T value { get; set; }
public TypeTest ()
{
}
}
Метод сервера, возвращающий typeTest
public TypeTest<String> doTypeTest()
{
TypeTest<String> theTester = new TypeTest<String>("grrrr");
return theTester;
}
Соответствующий объект значения flex:
[RemoteClass(alias="API.Model.TypeTest")]
public class TypeTest
{
private var _value:Object;
public function get value():Object
{
return _value;
}
public function set value(theValue:Object):void
{
_value = value;
}
public function TypeTest()
{
}
}
и код обработчика результата:
public function doTypeTest(result:TypeTest):void
{
var theString:String = result.value as String;
trace(theString);
}
Когда вызывается обработчик результата, я получаю ошибку времени выполнения:
Ошибка типа: ошибка # 1034: приведение типа
не удалось: не удалось преобразовать
mx.utils :: ObjectProxy @ 11a98041 to
com.model.vos.TypeTest.
Раздражительно, если я изменяю обработчик результатов на параметр типа Object, он работает нормально.
Кто-нибудь знает, как заставить это работать с объектом значения? Я чувствую, что упускаю что-то действительно очевидное.