我创建了一个便携式类库,用于我的 Monodroid项目。 但问题是我需要 System.IO 库,但遗憾的是我无法添加它。
我甚至尝试通过“添加引用”选项添加它,但这是徒劳的。
为什么会这样? 我该怎么做?
答案 0 :(得分:15)
您无法使用System.IO
,因为它不是可移植的类库。 System.IO
进行特定于其运行的操作系统的调用(Windows),而可移植类库则是跨平台的。
可以找到您正在寻找的解决方案here:
当您尝试编写便携式库时,应该怎么做? 你需要一些不受支持的功能吗?你不能打电话给 API直接,你不能引用一个库,因为 可移植库不能引用非可移植库。该 解决方案是在您的可移植库中创建一个抽象 提供您需要的功能,并实现该抽象 对于您的便携式库目标的每个平台。例如,如果你 需要保存和加载文本文件,你可能会使用像这样的界面 这样:
public interface IFileStorage
{
Task SaveFileAsync(string filename, string contents);
Task<String> LoadFileAsync(string filename);
}
最好只包含您需要的功能 抽象。在此示例中,接口不抽象一般 文件系统概念,例如流,文件夹或枚举文件。 这使抽象更容易实现,更容易实现。该 方法返回任务,以便实现Windows应用商店应用 可以调用WinRT文件IO API,它们是异步的。
创建抽象允许可移植库调用 不可移植的代码,这种模式几乎适用于您 需要从便携式库访问非便携式功能。的 当然,你需要一些方法让可移植代码获得引用 抽象的实现。你如何做到这一点取决于 无论您是编写跨平台应用程序还是通用目的 可重复使用的库。