如何在as3中使用parsley框架注入字典?

时间:2011-08-29 19:41:47

标签: actionscript-3 dependency-injection parsley

在我的欧芹容器中,我正在实例化一个包含字典(flash.utils.Dictionary)的对象'A'。

我想用parsley创建这个词典并将其注入'A'。 这个字典对结构是:key =对象'B'的id,value ='B' 其中对象'B'也是使用欧芹定义和创建的对象 (所以基本上对结构是对象id作为键,对象本身作为值)。

现在,创建“A”和“B”没有问题,但似乎无法找到使用欧芹创建此字典的正确方法,也无法将其注入“A”。

非常感谢任何帮助!

提前致谢, Yogev

1 个答案:

答案 0 :(得分:3)

您可以在context.mxml中执行此操作:

<mx:Object xmlns:mx="http://www.adobe.com/2006/mxml" 
           xmlns="http://www.spicefactory.org/parsley">

    <mx:Script>
            <![CDATA[
                import com.example.ObjectToInjectX; 
                import com.example.ObjectToInjectY;
                import com.example.MyExampleObject;

            ]]>
    </mx:Script>

    <!-- The class to inject the map into, just declare -->
    <Object type="{MyExampleObject}" id="myExampleObject" />

    <!-- Objects to inject into the Dictionary -->
    <Object type="{ObjectToInjectX}" id="objectToInjectX" />
    <Object type="{ObjectToInjectY}" id="objectToInjectY" />

    <!-- The Dictionary -->
    <Object type="{Dictionary} id="myDictionaryToInject" />
        <DynamicProperty name="itemX" idRef="objectToInjectX" />
        <DynamicProperty name="itemY" idRef="objectToInjectY" />
    </Object>

</mx:Object> 

然后只需在要注入的类中执行以下操作:

public class MyExampleObject
{
     private var _myDictionaryToInject:Dictionary;

     [Inject(id="myDictionaryToInject")]
     public function set myDictionaryToInject( myDictionaryToInject:Dictionary ):void
     {
            _myDictionaryToInject = myDictionaryToInject;
     }
}