Environment.SpecialFolder问题

时间:2013-11-09 13:53:12

标签: c# methods environment-variables

我如何输入要替换的字符串

(Environment.SpecialFolder.ApplicationData)作为.ApplicationData部分需要根据传递给它的变量进行更改。

string specialFolder = ("Environment.SpecialFolder." + specialLocation);
specialLocation = "this will change depending on path location"; 
path = Path.Combine(Environment.GetFolderPath("specialFolder"),
                @""+backupPath);
希望我已经说清楚了。

感谢

2 个答案:

答案 0 :(得分:1)

使用Enum.TryParse是您的答案

例如:

string s = "ApplicationData";
Environment.SpecialFolder sf;
if(Enum.TryParse<Environment.SpecialFolder>(s, true, out sf))
     Console.WriteLine(Environment.GetFolderPath(sf));

因此,您的代码可以写成:

Environment.SpecialFolder sf;
if(Enum.TryParse<Environment.SpecialFolder>(specialLocation, true, out sf))
{
    path = Path.Combine(Environment.GetFolderPath(sf), backupPath);
    .....
}

答案 1 :(得分:0)

您需要使用枚举解析字符串值。如果你想在字符串不正确的情况下抛出异常,你可以使用Parse。更安全的方法是使用try parse。

Environment.SpecialFolder folder;
                if (Enum.TryParse<Environment.SpecialFolder>("ApplicationData",true, out folder))
                {
                    var path = Environment.GetFolderPath(folder);
                }