Apache flex 在mxml中创建接口对象

Apache flex 在mxml中创建接口对象,apache-flex,flash,mxml,Apache Flex,Flash,Mxml,假设我有一个接口 public interface IFoo { ... } 我有几个实现类 public class Foo implements IFoo { ... } ... public class Bar implements IFoo { ... } ... public class Baz implements IFoo { ... } 我想像这样引用MXML中的IFoo <ns:IFoo id="myfoo"/> 并在运行

假设我有一个接口

public interface IFoo {
   ...
}
我有几个实现类

public class Foo implements IFoo {
    ...
}

...

public class Bar implements IFoo {
    ...
}

...

public class Baz implements IFoo {
    ...
}
我想像这样引用MXML中的IFoo

<ns:IFoo id="myfoo"/>
并在运行时由工厂对其进行实例化

但是,编译器不允许我这样做——它试图在生成的ActionScript中创建新的IFoo


如何避开这个问题?如何在MXML中使用接口和工厂?

您可以在MXML组件的根节点中使用implements=IFoo属性实现接口

编辑:


对不起,我误解了你的问题。我不知道用纯mxml实现工厂的方法。我想您必须使用Actionscript或mxml状态来实现类似的行为。

请检查。这就是项目呈现器等对象的实例化方式。

声明MXML子对象会实例化该类型的对象-如果不将实例与之关联,则不能简单地在MXML中声明属性

考虑到这一点,没有办法达到

public var myFoo:IFoo;
在您的MXML中

正如James指出的,您可以使用类工厂实现以下功能:

<mx:ClassFactory class="{Foo}" id="fooFactory" />

但是您需要调用foodfactory.newInstance来获取IFoo。

我不想创建实现接口的组件。我想实例化一个实现接口的组件。