2017-07-07 45 views
0

我想在編譯期間將文本中的文本加載到類上的屬性中。C#在編譯期間用文件中的文本「加載」對象的屬性

示例 -

我有一個名爲banana.txt,我想它的編譯期間投入Banana類的內容的文件。

public class Banana 
{ 
    public string Text { get; set; } //contents of banana.txt goes in here 
} 

這怎麼辦?

這樣做的目的是這樣的,每當需要Banana對象的Text時,不必讀取文件,文件中的文本只需要在編譯期間讀取一次。

注意:我必須從文件中讀取,而不是將內容複製到一個變量,或資源文件,我知道每一個Banana對象將具有相同的文本。),以

+0

在應用程序啓動(運行時)上加載文件是否正確? – ashin

+0

Ashin,這比每次調用對象時加載它都更好。 –

+0

請檢查我發佈的答案。 – ashin

回答

0

的一種方式實現這將是: 編寫預生成事件。 在預生成事件中,調用一個程序。 該程序可以是另一個C#程序 該程序將從banana.txt讀取。 然後這個程序會重新生成你的源代碼。

例如。如果你有你的代碼爲:

public string Text = "~placeholder_for_Text~" 

程序將與banana.txt

0

如果這是正常在運行時只有一次加載該文件內容的實際內容替換「〜placeholder_for_Text〜」,你可考慮使用以下代碼:

public class Banana 
{ 
    public string Text 
    { 
     get 
     { 
      return fileContent; 
     } 
    } 

    private static string fileContent; 

    static Banana() 
    { 
     using (var reader = File.OpenText("banana.txt")) 
     { 
      fileContent = reader.ReadToEnd(); 
     } 
    } 
} 
+0

感謝您的建議,我最終可能會使用類似的東西,但我仍然想知道在編譯過程中是否有簡單的方法在代碼中執行此操作。 –