2013-08-30 64 views
0

我有一個字符串值的數組,我想在Flags枚舉對象上設置標誌。我有幾個這些,正在尋找一種更通用的方式來傳入Flags枚舉的類型,而不必爲每個Flags枚舉類型重複該方法。這是我目前有:通用枚舉標誌分析器

public static MyFlagsEnum ParseFlagsEnum(string[] values) 
    { 
     MyFlagsEnum flags = new MyFlagsEnum(); 
     foreach (var flag in values) 
     { 
      flags |= (MyFlagsEnum)Enum.Parse(typeof(MyFlagsEnum), flag); 
     } 

     return flags; 
    } 

我一直在尋找做同樣的事情更寬泛的方式,同時能夠使用任何標誌枚舉類型。

+1

http://msdn.microsoft.com/en-us/library/system.enum.tryparse.aspx – m0s

+0

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

7

Enum.Parse已經可以組合多個標誌。從文檔引用:

備註

值參數包含一個枚舉構件的底層值的字符串表示或命名常量,或由逗號分隔命名常數的列表(,)。一個或多個空格可以在每個值,名稱或逗號之前或之後。如果value是一個列表,則返回值是指定名稱的值與按位或操作的組合。

所以你可以做這樣的:

public static T ParseFlagsEnum<T>(string[] values) 
{ 
    return (T)Enum.Parse(typeof(T), string.Join(",", values)); 
} 
+0

完美地工作。謝謝! –