我已经制作了桌面应用程序,我希望它也可以作为网络应用程序使用。 我在使用File()类型和FileStream的行上出错,有没有办法绕过这个?
答案 0 :(得分:2)
File()类仅适用于AIR应用程序,这就是您收到错误的原因。
我就是这样做的:
然后,您可能需要在某个时间使用接口来切换特定于平台的实现
答案 1 :(得分:2)
要依赖@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
}
请注意注入元标记。这是您的依赖注入(DI)系统将根据配置(Air应用程序的FileStuffService或Web应用程序的HTTPStuffService)推送您的依赖项的地方。欧芹和RobotLegs使用 [注入] ,其中fiex-ioc使用 [IocBind]
当然,你可以没有DI容器...你只需要直接注入参数。
但是你明白了......实际上是一个非常简单的模式。