9

.NET 4.5、Windows 8、Windows Phone 8を対象とする移植可能なクラスライブラリを作成しています。プロジェクトの一部であるテキストファイルからビルドコンテンツを読み込もうとしています。私はStreamReaderはPCLので利用可能ですが、私はファイルパスを与えられたファイルからストリームを取得する方法を見つけることができないことがわかります。誰かが私を正しい構造に向けることができたら、私はそれを感謝します。また、XMLファイルの方向性を示すこともできます。私はただ今テキストファイルを読んでいるだけですが、後でXMLで作業するつもりです。ありがとう!C#PCLファイルからの読み込み

+0

StreamReaderにストリームを渡せますか?質問はちょうど "ファイルを開く"ですが、いずれかでうまくいくはずですか?ほとんど同じXML APIでうまく動作します –

+0

ファイルパスの文字列がありますが、StreamReaderはストリームを取り込みます(明らかに)。 PCLでパスをストリームに変換する方法を尋ねています。 –

+0

ファイルのビルドアクションを埋め込みリソースに変更することができれば、最初の解答[here](http://stackoverflow.com/questions/10963781/how-to-read-a-)に記載されている方法を使用できます。ポータブル・クラス・ライブラリ内のリソース・ファイル)。 –

答えて

9

ポータブルクラスライブラリを使用すると、ターゲットとするすべてのプラットフォームに存在する名前空間とクラスを操作できます。
.Net 4.5(完全なデスクトップ-WindForms/WPFを意味すると仮定します)、Windows 8とWindows Phone 8はすべてファイルアクセスが大きく異なり、異なるファイルを利用できます。ファイルからアクセスできる場所も大きく異なります。埋め込みコンテンツ。埋め込まれたリソース。隔離された貯蔵;共有フォルダ。完全なファイルシステム。これらは、あなたが言及したすべてのプラットフォームで利用可能なわけではありません。

短い答え。あなたはおそらくあなたがしていることをすることはできません。

ファイルシステムへのアクセスはプラットフォームによって大きく異なり、通常はプラットフォームごとに異なる必要があります。
できることは、PCLが使用できるファイルアクセス(オープン、読み取り、保存など)のためのインタフェースを定義し、必要に応じてPCLに渡すプラットフォーム固有のインスタンスを作成することです。

+1

ありがとう、私はこのような高レベルの構造では、これは問題ではないと思った。しかし、私は完全に制限がどこから来るのか理解しています。ああ、インターフェイスへ!再度、感謝します。 –

9

マットは正しいです。

ただし、PCLからファイルにアクセスできるようにするプラグインがあります。私はあなたの最善の策だと思うあなたが現在行っているためしかしhttps://github.com/slodge/MvvmCross/tree/vnext/Cirrious/Plugins/File

...のdsplaistedポータブルファイルストレージライブラリ@ - - http://nuget.org/packages/pclstorage - - これはNuget経由で利用可能である

マイライブラリ、MvvmCrossは1つが提供してこれが書かれていますマイクロソフトのPCLチームの1人が、PCLのストリームをストリームに変換するのに適しています。

+0

MvvmCrossは素晴らしいです!それはクロスプラットフォームをはるかに簡単にする! – Telavian