StreamReader和可移植类库

时间:2013-08-07 17:53:47

标签: c# filestream streamreader streamwriter portable-class-library

我正在使用Portable Class Libraries编写一个ConfigManager类。 PCL支持我想要使用的StreamReaderStreamWriter类,但这些类的PCL版本不支持在构造期间传入字符串。 PCL也不支持reader.Close()writer.Close()。最后,它不支持FileStream类。

所以我正在寻找以下任何一个问题的答案:

  1. 如何让StreamReaderStreamWriter课程正常运作 在PCL?
  2. 如何使用PCL创建新的stream
  3. 我还需要在PCL中加载和保存文件还有哪些其他选项?

2 个答案:

答案 0 :(得分:8)

使用Dispose()代替Close()(或者只是将所有内容包装在using语句中)。我们在Windows应用商店应用和更新的PCL中隐藏/删除了Close(),因为它做了同样的事情,人们会对要拨打的电话感到困惑。

考虑使用PCL Storage进行跨平台文件系统访问。

以下是您可能想要参考的一些博客文章,了解如何在PCL中处理特定于平台的功能:

答案 1 :(得分:2)

在这里找到答案(Rob Caplan):http://social.msdn.microsoft.com/Forums/windowsapps/en-US/386eb3b2-e98e-4bbc-985f-fc143db6ee36/read-local-file-in-portable-library#386eb3b2-e98e-4bbc-985f-fc143db6ee36

  

无法在Windows应用商店应用之间进行文件访问   Windows Phone 8应用程序。您必须使用特定于平台的代码   打开文件并获取流。然后,您可以将流传递给   PCL。

     

由于Windows应用商店应用和Windows Phone 8应用都使用   基本上是相同的Windows(Phone)运行时类   Windows.Storage打开文件,你可以共享代码(但不是   二进制)通过链接两个项目之间的代码文件。见分享   添加为链接的代码。

     

请参阅最大化Windows Phone 8和Windows 8之间的代码重用以获取更多信息   共享代码的技术。

如果有人有这样的解决方案,我会有兴趣听到它;也想知道PCL中的.Close()方法。