在Flex3中,对象属性是什么类型的?

时间:2009-09-02 22:15:03

标签: flex actionscript-3 reflection actionscript flex3

我有很多像这样的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

有人可以在这里填空吗?

3 个答案:

答案 0 :(得分:3)

您可能需要describeType之类的内容。如果你想要一个真实的对象,也许你需要使用getDefinitionByName()。所以你的函数内容就是这样:

var typeXml:XML = describeType(type_var[property]);
return getDefinitionByName(typeXml.type[0].@name);

我没有编译它。把它扔出去看看是否有帮助。

答案 1 :(得分:0)

您可以使用'is'运算符来检查对象的类型。

The is operator

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必须包含确切的“时间”和“标签”属性。

希望它能解决你的问题