2016-11-26 5 views
1

私はStreamReaderの実装を持っています。C#StreamReader(文字列パス) - パスは何とか再びアクセスできますか?

internal class MyStreamReader : StreamReader 
{ 
    public MyStreamReader (string path) : base(path) 
    { 
    } 

引数はファイルへのパスです。

私は例外をスローし、そのメッセージに完全なファイル名を含めたいと思っていました。私はもちろん、 "_path"のような自分のクラスのフィールドに簡単に保存することができることは知っていますが、私は余分なことをしないようにしたいと思っていました。私は何とか "path"引数に再度アクセスできますか?

編集いくつかの混乱があるようですので、:

throw new FileLoadException($"Corrupt source file! File '{ // I need something to represents the file with its path }' is malformed. (...)"); 

だから、私のクラスにフィールド_pathを追加することなく、容易に交換// I need something to represent the file with its pathです。 this.GetTheInConstructorArgumentedPath()のようなもの。

+0

クラス例外には名前と値のペアを追加して取得できるデータがあります。 –

+0

'Exception'ベースクラスを使用する代わりに、' Exception'から継承した独自の 'WrongFileNameException'を作成し、必要なデータを追加します。スローされた例外に関するより詳細な情報を提供します。そして、あなたは 'catch(WrongfileNameException)'によってその例外をキャッチすることができます – Fabio

+0

@Fabioこれは絶対に私が求めているものではありません。私はこれを明確にするつもりです。 – OddDev

答えて

1

BaseStreamをFileStreamにキャストして、名前を取得してみてください(常に使用するファイルストリームだと思われる場合)。

(this.BaseStream as FileStream).Name 
+0

魅力的な作品です。 nullcheckを追加しました:var fileStream = this.BaseStream as FileStream; if(fileStream!= null) – OddDev

関連する問題