2010-11-14 27 views
1

嗯...我有枚舉值(例如,'VALUE') 和一些資源與TXT文件。 我得到使用下面的代碼此文件(「MyResource_test.txt」):通過枚舉值從資源獲取文件

FileStream fs = new FileStream("c:\\test.txt", FileMode.Create); 
StreamWriter sw = new StreamWriter(fs); 
sw.WriteLine(gui.Resources.MyResource.MyResource_test); 

現在我需要我的枚舉值

sw.WriteLine(gui.Resources.MyResource.VALUE); 

擺脫資源文件怎麼辦呢?反射或其他什麼? 感謝

+0

BTW,您可以創建'StreamWriter'直接從文件名:'新的StreamWriter(@「C:\ test.txt」)'。 – svick 2010-11-14 21:39:44

回答

0

創建的枚舉映射到資源的字典:

var map = new Dictionary<YourEnumType, object>(); 

map[YourEnumType.VALUE] = gui.Resources.MyResource.MyResource_test; 

然後,當你需要把它寫,使用地圖:

sw.WriteLine(map[YourEnumType.VALUE]); 

如果這是標準的.NET資源(.resx文件),還有一個選擇。這些資源通過生成的代碼通過字符串訪問資源來訪問。如果你把枚舉值等於資源項目的代碼的名字,你可以像這樣訪問他們:

var item = YourEnumType.VALUE; 

Resource1.ResourceManager.GetString(item.ToString()); 
+0

這很好....但是......可能還有其他方法嗎?因爲這樣我首先需要填寫我的字典。這是similliar使用開關(枚舉)來獲取資源。我可以在不創建任何其他對象或使用子句的情況下獲得它嗎? – nemocean 2010-11-14 21:34:15

+0

用替代方法更新了答案。 – 2010-11-15 06:12:56

1

使用ResourceManager:

sw.WriteLine(gui.Resources.MyResource.ResourceManager.GetString(YourEnumType.VALUE.ToString()));