2013-06-19 2 views
1

Я использую Adobe CS Extension Builder, и я отвлек конкретные реализации определенных классов с интерфейсами, чтобы обеспечить тестирование.Кастинг для интерфейса?

Как мне применить классы API к интерфейсу? Я, хотя с AS3, являюсь динамическим языком, делаю это так: «Приложение как IApplication» будет работать, но это не так. Обратите внимание, что интерфейсы определяют, что есть в этих реализациях, и не более того, поэтому с динамической точки зрения он должен работать.

Я попробовал следующее, как было предложено, но это оставляет iApp null. Возможно, одно из свойств интерфейса возвращает конкретный тип в приложении, но снова использует интерфейс для абстракции.

var app : Application = Photoshop.app; 
var iApp : IApplication = app as IApplication; 
+0

Пусть класс 'Application' реализует' IApplication'. Тогда нет необходимости бросать в 'IApplication'. – mazatwork

+1

Как я уже сказал, это часть API, это не мой класс! –

ответ

0

Вы должны сделать это с переменной, которые были определены, а не к классу

var t:Application = new Application(); 
var iApp:IApplication = t as IApplication 
0

Если исходный класс не реализует интерфейс, вы не повезло. Однако; возможно, можно было бы издеваться над реализацией (для тестирования), используя, например, mockalate (http://mockolate.org/).

Смежные вопросы