2016-11-26 126 views
1

我有一個StreamReader的實現。C#StreamReader(字符串路徑) - 路徑是否可以再次訪問?

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

參數是文件的路徑。

我想拋出一個異常,並在其消息中包含完整的文件名。我當然知道,我可以很容易地將它保存在我自己班級的「_path」字段中,但我想確保我沒有做任何多餘的事情。我能以某種方式再次訪問「路徑」參數嗎?

編輯,因爲似乎有一些混亂:

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

那麼,// I need something to represent the file with its path易於更換而無需添加一個字段_path上我的課。像this.GetTheInConstructorArgumentedPath()之類的東西。

+0

類異常有字段數據,您可以添加名稱 - 值對,然後獲取它。 –

+0

而不是使用'Exception'基類 - 創建你自己的'WrongFileNameException',它從'Exception'繼承並且添加你想要的任何數據。它會給你更多關於拋出異常的詳細信息。你可以通過catch(WrongfileNameException)來捕獲這個異常。' – Fabio

+0

@Fabio這絕對不是我所要求的。我要澄清這一點。 – OddDev

回答

1

嘗試將BaseStream轉換爲FileStream並從中獲取名稱(如果您認爲它始終是您使用的文件流)。

(this.BaseStream as FileStream).Name 
+0

工程就像一個魅力。我已經添加了一個nullcheck:var fileStream = this.BaseStream作爲FileStream; if(fileStream!= null) – OddDev