Flex: использовать функцию parentApplication из модуля, но с некоторым API

У меня есть приложение, которое загружает модули. Эти модули могут быть разработаны третьими сторонами. Чтобы облегчить им задачу, я хотел бы разработать API, чтобы они знали, какие функции они могут вызывать и использовать.

Так что я знаю, что это может работать в модуле, но тогда вы должны знать, что есть переменная "расходы" в parentApplication:

// Access properties of the parent application.
private function getDataFromParent():void {
    expenses = parentApplication.expenses;
} 

Но я бы предпочел что-то вроде этого:

private function getDataFromParent():void {
    var myParent : MyAPI = new MyAPI();
    expenses = myParent.getExpenses();
} 

Так что, если это будет работать так, когда вы начнете кодировать и наберите "myParent". Flex предложит все возможные функции и переменные с подсказкой кода.

Есть идеи, как начать с этим?

Большое спасибо,

Фрэнк

2 ответа

Решение

Я бы сделал интерфейс для "родителя" и один для "модулей". Это позволяет вам обрабатывать все модули одинаково и позволяет отдельным разработчикам модулей знать, что предоставляет "родитель".

public class IModule {
    // when initialize() is called it will be up to the module's developer to 
    // retain a reference to the parent and use that for later calls
    function initialize(parent:IParent):void;
    function doStuff():Boolean;
}

public class IParent {
    function getInfo():String;
    function foo(value:int):int;
}

Создайте класс с именем MyAPI и инкапсулируйте родительские вызовы.

package com.myAPI
{

    public class MyAPI
    {
        public function MyAPI()
        {
        }

        public function expenses():expenseType{
               parentApplication.expenses;
        }
    }
}

Разработчики вашего модуля должны будут скомпилировать этот класс в свой модуль.

Другие вопросы по тегам