我创造了一个 便携式类库 用在我的 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);
}
最好只包含您需要的功能 抽象。在此示例中,接口不抽象一般 文件系统概念,例如流,文件夹或枚举文件。 这使抽象更容易实现,更容易实现。该 方法返回任务,以便实现Windows应用商店应用 可以调用WinRT文件IO API,这是异步的。
创建抽象允许可移植库调用 不可移植的代码,这种模式几乎适用于您 需要从便携式库访问非便携式功能。的 当然,您需要一些方法让可移植代码获得引用 抽象的实现。你如何做到这一点取决于 无论您是编写跨平台应用程序还是通用目的 可重复使用的库。