便携式类库不支持System.IO,为什么?

时间:2014-08-23 09:39:59

标签: c# .net xamarin.android portable-class-library

我创建了一个便携式类库,用于我的 Monodroid项目。 但问题是我需要 System.IO 库,但遗憾的是我无法添加它。

我甚至尝试通过“添加引用”选项添加它,但这是徒劳的。

为什么会这样? 我该怎么做?

1 个答案:

答案 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,它们是异步的。

     

创建抽象允许可移植库调用   不可移植的代码,这种模式几乎适用于您   需要从便携式库访问非便携式功能。的   当然,你需要一些方法让可移植代码获得引用   抽象的实现。你如何做到这一点取决于   无论您是编写跨平台应用程序还是通用目的   可重复使用的库。