通过枚举值从资源获取文件

问题描述:

嗯...我有枚举值(例如,'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

创建的枚举映射到资源的字典:

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

使用ResourceManager:

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