【发布时间】:2010-04-27 22:21:15
【问题描述】:
是否可以通过 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 类型的参数,它可以正常工作。
有人知道如何使用值对象来实现这一点吗?我觉得我错过了一些非常明显的东西。
【问题讨论】:
标签: .net apache-flex amf remoteobject