2016-08-31 35 views
1

DALには、jsonファイルからデータを取得するリポジトリクラスがあります。そのjsonファイルはslnに含まれています。リポジトリクラスをjsonファイルから読み込み、ファイルの読み込み方法は?

コードでは、ファイルの絶対位置を使用してストリームリーダーを作成し、ファイルを読み取り、JsonConvertを使用しています。私はこの絶対パスを削除したい

var json = new StreamReaderWrapper(absoluteFileNamePath).ReadToEnd(); 
JsonConvert.DeserializeObject<MyInfoCollection>(json); 

は、私がプロジェクトにリソースを使用しようとしましたが、私は常にnullストリームを持っています。私のJSONファイルとして

var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("file"); 

がSLNである、私は常にコピーするプロパティファイル変更しましたが、それが唯一DALのbinフォルダではなくメインの実行中にコピーされます。だから私は相対的な道のアプローチを試みることができませんでした。

この絶対パスを削除する最適なソリューションは何ですか?あなたはどうやってそれをしますか?

+0

使用しているアプリケーションの種類(winformまたはWebアプリケーションか他のもの)には、それに応じて異なるテクニックを使用する可能性があるため、タグを付ける必要があります。 – Igor

+2

jsonをリソースとして埋め込んでいますか?これは単純にソリューションの一部であることとは異なります。 – Amy

+0

現在、jsonはソリューションに含まれています。私はそれをリソースとして追加し、上記のコードで取得しようとしましたが、うまくいきませんでした。そのため、私はStackoverflowを求めています。 WPFアプリケーションです。 –

答えて

0

GetManifestResourceStreamの引数は、プロジェクト内のパスとファイル名の名前空間でフォーマットする必要があります。例:

"DAL.SomeProjectFolderForJsonData.Filename" 

また、jsonファイルのビルドアクションが埋め込みリソースに設定されていることを確認する必要があります。

+0

私はGetManifestResourceStreamを名前空間、プロジェクトとファイル名のパスで呼び出すことを使用しています。 jsonファイルでビルドアクションが見つかりませんでした。私は2015年対のコミュニティを使用しています。 –

+0

OK、Build Actionを見つけましたが、埋め込みRessourceに設定しましたが、GetManifestResourceStreamからストリームを取得できません。 –

+0

@ CedricRoyer-Bertrand - プロジェクトファイルを右クリックし、Add - > "Existing Item ..."を選択してください。これにより、ファイルブラウザが開きます。 jsonファイルに移動します(ファイルブラウザの右下隅にあるフィルタを変更する必要があります)。ファイルがプロジェクトに表示されたら、ファイルのビルドアクションを埋め込みリソースに変更します。この時点で、GetManifestResourceStreamの引数が私の以前の指示に対応していることを確認してください。 –