@ aib, к сожалению, неверно. Предполагая строгий режим (режим компилятора по умолчанию), невозможно изменить прототип нединамических типов классов в ActionScript 3. Я даже не уверен, что это возможно в нестрогом режиме.
Является ли обертывание опцией? По сути, вы создаете класс, который принимает один из объектов, которые вы получаете от веб-службы, и просто перенаправляет все вызовы методов на него, но также имеет свои собственные методы:
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!"
}
}
Если вы хотите работать с Foo
, но у вас есть дополнительный метод, который вам нужен, вы оборачиваете экземпляр Foo
в FooWrapper
и вместо этого работаете с этим объектом.
Это не самое удобное решение, там много печатания, и если сгенерированный код меняется, вы должны вручную изменить класс FooWrapper
, но если вы не можете изменить сгенерированный код, включив нужный метод или сделать класс динамическим, я не понимаю, как это можно сделать.
Другое решение - добавить в процесс сборки шаг, который изменяет источник сгенерированных классов. Я предполагаю, что у вас уже есть шаг, который генерирует код из WSDL, так что вы можете добавить шаг после этого, который вставит необходимые вам методы.