2016-07-28 83 views
-1

我想寫一個程序,其中有些詞連接到另一個。一個例子是A變爲1,B變爲2.有些人可能會調用這個映射。我想到的想法是我們運行該程序,然後程序打開一個word文檔,用戶可以在其中更改字符或數字對應的內容,然後程序更新,而無需重新編譯。我的想法是創建一個字典:如何讓用戶無需重新編譯代碼即可編輯代碼

Dictionary <string, string> mappings = new Dictionary<string, string>(); 
mappings["A"] = "1"; 
mappings["B"] = "2"; 

我只是不知道如何實現的部分,其中程序將讓你改變代碼而無需重新編譯。也許我應該讓程序編輯映射?

+9

爲什麼不將映射存儲在文件中? –

+0

將映射存儲在用戶可以編輯的文件中。我無法想象允許用戶編輯您的代碼以及您或您的用戶。 –

+0

@ DanielA.White爲什麼這很有幫助,如果我這樣做,那麼有沒有辦法讓我在運行時訪問該文件,並在不重新編譯代碼的情況下對其進行更改? –

回答

1

下面是您如何執行基本文件IO和字符串操作的示例。

這是一個用於學習目的的簡單例子,它不能處理一些諸如換行符或'='字符在你想要映射的字符串之一。

假設你有像文件這樣

A = 1
B = 2

你可以讓你的完全一樣的字典,這個代碼

Dictionary<string, string> mappings = new Dictionary<string, string>(); 

// gets an array lines in the file 
var lines = System.IO.File.ReadAllLines("TextFile1.txt"); 

foreach(var line in lines) 
{ 
    //this gets an array of substrings, seperated by the specified character 
    var vals = line.Split('='); 

    //adds a value to your dictionary 
    mappings.Add(vals[0], vals[1]); 
} 

如果您想要在不更改代碼的情況下更改映射,只需更改該文件即可。

+0

如何在運行期間讓程序更改文件? –

+0

@newbie_at_linux'File.WriteAllLines(「TextFile1.txt」,新列表 {「Line1」,「Line2」});' –

+0

你可以向我解釋代碼行嗎?我看不到它如何在更改文件期間運行時 –