是否可以通过 AMF 接收自定义泛型类型对象?我正在尝试将 flex 应用程序与现有的 C# 服务集成,但 flex 在自定义泛型类型对象上令人窒息。据我所知,Flex 甚至不支持泛型,但我希望能够只读取对象并根据需要转换其成员。我基本上只是想让 flex 忽略<T>
. 我希望有一种方法可以做到这一点,因为 flex 不会抱怨类型化集合(返回 List 的服务器调用工作正常,并且 flex 将它转换为 ArrayCollection 就像一个非类型化列表一样)。
这是我正在发生的事情的精简示例:
自定义 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);
}
当调用结果处理程序时,我得到运行时错误:
TypeError:错误 #1034:类型强制失败:无法将 mx.utils::ObjectProxy@11a98041 转换为 com.model.vos.TypeTest。
令人恼火的是,如果我将结果处理程序更改为采用 Object 类型的参数,它工作正常。
任何人都知道如何使用值对象进行这项工作?我觉得我错过了一些非常明显的东西。