Библиотека StreamReader и Portable Class Library

Я пишу класс ConfigManager, используя Portable Class Libraries. PCL поддерживает классы StreamReader и StreamWriter, которые я хочу использовать, но версия PCL этих классов не поддерживает передачу строки во время построения. PCL также не поддерживает reader.Close() и writer.Close(). Наконец, он не поддерживает класс FileStream.

Итак, я ищу ответ на любой из следующих вопросов:

  • Как я могу получить классы StreamReader и StreamWriter в PCL?
  • Как создать новый stream с помощью PCL?
  • Какие еще альтернативы мне нужно загрузить и сохранить файлы в PCL?

Ответ 1

Используйте Dispose() вместо Close() (или просто оберните все в оператор using). Мы скрыли/удалили Close() в приложениях Windows Store и новых PCL, потому что они делают то же самое, и люди будут смущены, о которых можно позвонить.

Рассмотрите возможность использования PCL Storage для доступа к файловой системе через платформу.

Вот несколько сообщений в блогах, которые вы можете захотеть узнать, как подойти к функциональности платформы в PCL:

Ответ 2

нашел ответ здесь (Роб Каплан): 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 Store и Приложения для Windows Phone 8. Вы должны будете использовать код конкретной платформы, чтобы откройте файл и приобретите поток. Затем вы можете передать поток в PCL.

Так как приложения Windows Store и приложения Windows Phone 8 используют по существу те же самые классы Windows (Phone) Runtime из Windows.Storage, чтобы открывать файлы, вы можете использовать код (но не бинарный) путем связывания файла кода между двумя проектами. См. Раздел код с добавлением в виде ссылки.

См. раздел Максимальное повторное использование кода между Windows Phone 8 и Windows 8 для более методы совместного использования кода.

Если у кого-то есть другое решение, мне было бы интересно его услышать; также задаются вопросом о методах .Close() в PCL.