AS3 TypedDictionary?

时间:2014-02-26 17:11:22

标签: actionscript-3 flash flex actionscript

 public dynamic class TypedDictionary extends Dictionary {
    private var _type:Class;

    public function TypedDictionary(type:Class, weakKeys:Boolean = false) {
        _type = type;
        super(weakKeys);
    }

    public function addValue(key:Object, value:_type):void {
        this[key] = value;
    }

    public function getValue(key:Object):_type{
        return this[key];
    }
...

我想用典型化制作TypedDictionary。但我无法在_typeaddValue中使用getValue。我们的想法是使用下一个结构:

var td:TypedDictionary = new TypedDictionary(myClass, true);
td.addValue("first", new myClass());
...
var item:myClass = td.getValue("first");
item.someFunction();

是否有能力使用动态类类型?

1 个答案:

答案 0 :(得分:1)

如果我理解你要求的东西。
这是未经测试的代码,因此可能容易出错,但它应该让您走上正确的道路。

 public dynamic class TypedDictionary extends Dictionary {
    private var _type:Class;

    public function TypedDictionary(type:String, weakKeys:Boolean = false) {
        _type =  getDefinitionByName(type) as Class;
        super(weakKeys);
    }

    public function addValue(key:Object, value:*):void {
        if(_type == getDefinitionByName(getQualifiedClassName(value))){
            this[key] = value;
        }else{
            trace('failed type match')
        }
    }

    public function getValue(key:Object):*{
        return this[key];
    }
...


var td:TypedDictionary = new TypedDictionary("com.somepackage.myClass", true);
td.addValue("first", new myClass());

var item:myClass = td.getValue("first");
item.someFunction();