Apache flex FastInject未检测到欧芹中的objectId

Apache flex FastInject未检测到欧芹中的objectId,apache-flex,dependency-injection,inject,parsley,Apache Flex,Dependency Injection,Inject,Parsley,我最近刚开始使用欧芹,我遇到了这个问题。问题是我的项目中有一个自定义组件,它由Parsley“配置”,并有一段代码,如下所示: <fx:Script> <![CDATA[ ... [Inject(id="dateFormatter")] [Bindable] public var dateFormatter:DateFormatter; ... ]]> </fx:Scri

我最近刚开始使用欧芹,我遇到了这个问题。问题是我的项目中有一个自定义组件,它由Parsley“配置”,并有一段代码,如下所示:

<fx:Script>
<![CDATA[
            ...
            [Inject(id="dateFormatter")]
            [Bindable] public var dateFormatter:DateFormatter;
            ...
]]>
</fx:Script>

<fx:Declarations>
<parsley:Configure />
</fx:Declarations>
从我在线搜索时发现的情况来看,
FastInject
中的
objectId
[Inject(id=“dateFormatter”)]
相同。这是我的建议。如果我错了,请纠正我:)

但当我使用它时,我遇到了以下错误:
错误:注册了多个mx.formatters::DateFormatter类型的对象

这是否意味着正在注入的属性的ID没有被提取?当我配置整个组件并使用
Inject
meta标记时,它可以正常工作,但我不想配置整个组件


有人能提出解决方案吗?

如果上下文中声明的对象具有id,则FastInject by id有效

上下文配置

组件中的FastInject


这对我来说很有用。

当您从类A继承B并希望在指定类型的同时按id注入这两个元素时,欧芹FastInject会感到困惑


您只需要使用FastInject的objectId/type属性之一

谢谢
dgesang
。。这对我有用:)!!我的错误是我在声明中同时使用了
objectId
type
!!嘿,杰迪斯。。谢谢您的回复,但是您能告诉我在什么情况下我应该使用
objectID
type
?如果可能的话,最好按类型进行注射。这样,您就不必编写任何objectId名称,而且代码更干净。只有在欧芹上下文中定义了多个相同类型的类(也可以是子类的一种情况)时,才应该使用id注入。
<parsley:FastInject objectId="dateFormatter" property="dateFormatter" type="{DateFormatter}" />
<fx:Declarations>
    <foo:FooBar1 />
    <foo:FooBar2 id="fooBar2" />
</fx:Declarations>
<fx:Declarations>
    <parsley:FastInject injectionComplete="handlerInjectComplete(event)">
        <parsley:Inject property="foobar1" type="{FooBar1}" />
        <parsley:Inject property="foobar2" objectId="fooBar2"/>
    </parsley:FastInject>
</fx:Declarations>
<fx:Script>
    <![CDATA[
        [Bindable]
        public var foobar1:FooBar1;
        [Bindable]
        public var foobar2:FooBar2;

        protected function handlerInjectComplete(event:Event):void
        {
            if(foobar1) trace("foobar1 available");
            if(foobar2) trace("foobar2 available");
    }
    ]]>
</fx:Script>