2013-11-09 15 views
1

我怎麼會輸入一個字符串替換Environment.SpecialFolder問題

(Environment.SpecialFolder.ApplicationData)作爲.ApplicationData部分需要根據傳遞給它的變量發生變化。

string specialFolder = ("Environment.SpecialFolder." + specialLocation); 
specialLocation = "this will change depending on path location"; 
path = Path.Combine(Environment.GetFolderPath("specialFolder"), 
       @""+backupPath); 

希望我已經說清楚了。

感謝

回答

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); 
    ..... 
} 
+0

謝謝一堆!這解決了它像一個魅力。 – 0lzi

0

您需要解析使用枚舉的字符串值。如果你想要在字符串不正確的情況下拋出異常,U可以使用Parse。更安全的方法是使用嘗試解析。

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