Parsley:从对象定义创建对象定义构建器

时间:2011-08-15 23:12:38

标签: flex parsley

我正在研究Parsley的框架扩展,并且需要在上下文初始化期间有效地克隆ObjectDefinition,并改变它的一些属性。

由于ObjectDefinition本质上是不可变的,我发现我必须通过箍来创建一个新的构建器,以安全地确保已复制现有ObjectDefinition的属性。

有没有办法从现有的ObjectDefinitionBuilder安全地创建新的ObjectDefinition

如果没有,还有哪些其他替代方法可用于创建ObjectDefinition克隆?

1 个答案:

答案 0 :(得分:0)

我不确定是否有一个更优雅的解决方案,但我最终做到了这一点。

在我的具体情况下,我想更改已注册对象的类,但保留其他属性。这是我最终使用的方法:

private function cloneDefinition(objectDefinition:ObjectDefinition,replacementClass:Class):ObjectDefinition
{
        switch (true)
        {
            case objectDefinition is DefaultSingletonObjectDefinition:
                return new DefaultSingletonObjectDefinition(ClassInfo.forClass(replacementClass),objectDefinition.id,objectDefinition.registry);
            case objectDefinition is DefaultDynamicObjectDefinition:
                return new DefaultDynamicObjectDefinition(ClassInfo.forClass(replacementClass),objectDefinition.id,objectDefinition.registry);
        }
        throw new Error("Support for cloning object definitions of type " + getQualifiedClassName(objectDefinition) + " not yet supported");
}