我创建了一个可移植类库,以供我的Monodroid项目使用。 但问题是,我需要System.IO库,但不幸的是我无法添加它。
我甚至尝试通过添加引用选项来添加它,但徒劳无功。
为什么会发生这种情况? 我该怎么做?
我创建了一个可移植类库,以供我的Monodroid项目使用。 但问题是,我需要System.IO库,但不幸的是我无法添加它。
我甚至尝试通过添加引用选项来添加它,但徒劳无功。
为什么会发生这种情况? 我该怎么做?
由于System.IO不是可移植类库,因此您无法使用它。 System.IO调用特定于其运行的操作系统(Windows)的功能,而可移植类库旨在跨平台。
解决方案可以在这里找到:
当您尝试编写可移植库但需要某些不受支持的功能时,该怎么办?您不能直接调用 API,也不能引用非可移植库,因为可移植库不能引用非可移植库。解决方案是在可移植库中创建一个提供所需功能的抽象,并针对每个目标平台实现该抽象。例如,如果您需要保存和加载文本文件,则可以使用以下接口:
public interface IFileStorage
{
Task SaveFileAsync(string filename, string contents);
Task<String> LoadFileAsync(string filename);
}
在抽象化过程中,只包括所需的功能是个好主意。在这个例子里,接口并没有抽象化一般文件系统概念,如流、文件夹或枚举文件。这使得抽象更具可移植性和易于实现。方法返回任务(Task)以便Windows Store应用程序的实现可以调用WinRT文件IO API,这些API是异步的。