2016-08-17 64 views
0

我有一個字符串列表的XML文檔中:有沒有辦法將字符串列表轉換爲c#中的枚舉標誌?

<properties>red yellow blue</properties> 

,我有一個枚舉:

[Flags] 
public enum Properties 
{ 
    None = 0, 
    red = 1, 
    yellow = 2, 
    blue = 4, 
    green = 8 
} 

有沒有辦法將XML字符串轉換成7或枚舉標誌值0111

圍繞着做相反的事情有無數的資源,但我無法找到關於從字符串轉換爲標誌的任何信息。

+0

您是否要求在運行時創建編譯時構造?你也許可以用反射來做到這一點,但我相信這裏可能有另一種'enum'。 –

回答

3

是的,但你需要他們用逗號分隔:

[Flags] 
public enum Test 
{ 
    A = 1, 
    B = 2, 
    C = 4 
} 

Test t; 
Enum.TryParse<Test>("A,B", out t); 

既然你不能在名稱中包含空格,你可以做一個字符串的空間調用的TryParse前更換到逗號。

1

當然

string flags = "red yellow blue"; 

var eflags = flags.Split() 
        .Select(s => (Properties)Enum.Parse(typeof(Properties), s)) 
        .Aggregate((a, e) => a | e); 

Console.WriteLine(eflags); 
Console.WriteLine((int)eflags); 

Outpus

紅,黃,藍

我會留下怎樣獲取字符串從XML高達您。

+2

這是我見過的最快的投票。 – juharr

+0

顯然有人正在進行投票狂熱......我也立即得到了一個。爲什麼我甚至都與這個網站大聲笑? – SledgeHammer

+0

@SledgeHammer現在我已經看到它在投票和反對票之間來回滾動3次或4次。有趣。 – juharr

相關問題