不幸的是,@aib 不正确。假设严格模式(默认编译器模式)不可能在 ActionScript 3 中修改非动态类类型的原型。我什至不确定在非严格模式下是否可行。
包装一个选项吗?基本上,您创建一个类,该类采用您从 Web 服务获得的对象之一,并将所有方法调用转发给该对象,但也有自己的方法:
public class FooWrapper extends Foo {
private var wrappedFoo : Foo;
public function FooWrapper( foo : Foo ) {
wrappedFoo = foo;
}
override public function methodFromFoo( ) : void {
wrappedFoo.methodFromFoo();
}
override public function anotherMethodFromFoo( ) : void {
wrappedFoo.anotherMethodFromFoo();
}
public function newMethodNotOnFoo( ) : String {
return "Hello world!"
}
}
当您想使用 aFoo
时,还需要额外的方法,您需要将Foo
实例包装在 a 中FooWrapper
并使用该对象。
这不是最方便的解决方案,有很多输入,如果生成的代码发生更改,您必须FooWrapper
手动更改类,但除非您可以修改生成的代码以包含您想要的方法或使类动态我不不知道怎么做。
另一种解决方案是在您的构建过程中添加一个修改生成类的源的步骤。我假设您已经有一个从 WSDL 生成代码的步骤,所以您可以做的是在插入您需要的方法之后添加一个步骤。