我有很多像这样的Flex对象:
public class MyData {
public var time: Date;
public var label: String;
}
我从通过AMF检索到的DB记录中填充此对象,如下所示:
{
label: "Label",
incident: "2009-08-15 11:12:14.12233"
}
我想为这些对象编写一个通用值映射器,给定目标对象(此处为MyData
的实例)和输入记录,将能够告诉MyData.time
是{{ 1}}字段并自动执行类型映射。像这样:
Date
有人可以在这里填空吗?
答案 0 :(得分:3)
您可能需要describeType之类的内容。如果你想要一个真实的对象,也许你需要使用getDefinitionByName()。所以你的函数内容就是这样:
var typeXml:XML = describeType(type_var[property]);
return getDefinitionByName(typeXml.type[0].@name);
我没有编译它。把它扔出去看看是否有帮助。
答案 1 :(得分:0)
您可以使用'is'运算符来检查对象的类型。
function map(obj, targetType): * {
var newInstance: * = new targetType();
for (var property: String in obj) {
if (obj[property] is Date) {
newInstance[property] = parseDate(obj[property]);
}
else {
newInstance[property] = obj[property];
}
}
}
HTH
柯恩
答案 2 :(得分:-1)
如果需要将Object变量映射到变量类作为MyData,可以执行以下操作
public class MyData
{
public var time: Date;
public var label: String;
function map(obj:Object):void
{
for (var property: String in obj)
{
this[property] = obj[property];
}
}
}
注意:对象obj必须包含确切的“时间”和“标签”属性。
希望它能解决你的问题