问题 StreamReader和可移植类库


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

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

  1. 我怎么能得到 StreamReader 和 StreamWriter 上课 在PCL?
  2. 我怎样才能创建一个新的 stream 使用PCL?
  3. 我还有什么其他的替代品可以在PCL中加载和保存文件?

4088
2017-08-07 17:53


起源

它是否支持处理流对象?因为那应该关闭它就好了。 - Lasse Vågsæther Karlsen
而不是.Close()使用.Dispose(),没有解决方案,因为没有问题......必须抽象文件系统访问只是针对接口的代码。检查:[link] hthttps://pclstorage.codeplex.com 链接 - Dan


答案:


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

考虑使用 PCL存储 用于跨平台文件系统访问。

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


8
2017-08-09 00:45



PCLStorage是异步的,通常是不方便的。特别是在.NET / Xamarin / WP8上使用异步PCLStorage很遗憾,其中System.IO存在于所有平台上。 - Grigory
阅读此答案的人将使用PCL存储。 PCL存储不再维护,我建议不要在生产应用程序中使用它。更喜欢使用依赖注入实现自己的存储解决方案 - Tifa


在这里找到了答案(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之间的代码重用   共享代码的技术。

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


2
2017-08-07 18:03