File () FileStream в веб-приложении - PullRequest
0 голосов
/ 26 января 2011

Я сделал настольное приложение, и я хочу, чтобы оно работало также как веб-приложение. Я получаю ошибки в строках с типом File () и FileStream, есть ли способ обойти это?

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Чтобы добавить правильные ответы @Florian F, вот как вы можете это реализовать:

Создание интерфейса для абстрагирования доступа к файлу

public interface IGetTheStuffService {
    function getSomeTofu():Tofu;
}

Создание файловой реализации

public class FileStuffService implements IGetTheStuffService {
    public function getSomeTofu():Tofu {
        // File-based implementation
    }
}

И реализация на основе HTTP

public class HTTPStuffService implements IGetTheStuffService {
    public function getSomeTofu():Tofu {
        // HTTP-based implementation
    }
}

У вашего потребителя положитесь на IGetTheStuffService

[Inject] public var tofuService:IGetTheStuffService;

public function doSomeStuff():void {
    var tofu:Tofu = tofuService.getSomeTofu();
    // act on the tofu
}

Обратите внимание на метатег Inject . Именно здесь ваша система Dependency Injection (DI) будет выдвигать вашу зависимость на основе конфигурации (FileStuffService для приложений Air или HTTPStuffService для веб-приложений). Петрушка и RobotLegs используют [Inject] , где fiex-ioc использует [IocBind]

Конечно, вы можете обойтись без контейнера DI ... вы просто вставите параметр напрямую.

Но вы поняли ... довольно простой шаблон, на самом деле.

2 голосов
/ 26 января 2011

Класс File () доступен только для приложений AIR, поэтому вы получаете сообщение об ошибке.

Вот как бы я это сделал:

  1. Вам необходимо изолировать зависимый от платформы код и поместить в отдельную библиотеку.
  2. Другой код, который работает одинаково, независимо от платформы в другой изолированной библиотеке.
  3. Создайте 2 проекта, которые будут простыми обертками. Проект Flex, который связан только с общим кодом. Проект AIR, связанный с общим и платформо-зависимым кодом.

Тогда вам, вероятно, потребуется использовать интерфейсы для переключения между реализациями, которые зависят от платформы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...