2013-08-30 2 views
0

플래그 열 집합 개체에 플래그를 설정하고자하는 문자열 값 배열이 있습니다. 나는 이들 중 몇 가지를 가지고 있고 더 일반적인 방법을 찾고 Flags enum 유형을 전달하고 각 Flags Enum 유형에 대해 메소드를 복제 할 필요가 없습니다. 내가 같은 일을하고 좀 더 일반적인 방법을 찾고 있었다일반 열거 형 플래그 파서

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 매개 변수 문자열의 열거 부재의 하부 값의 표현 또는 명명 된 상수 또는 쉼표로 구분 명명 된 상수들의리스트를 포함

소견 (,). 하나 이상의 공백은 각 값, 이름 또는 쉼표 앞에 오거나 앞에 올 수 있습니다. value가 목록 인 경우 반환 값은 비트 OR 연산과 결합 된 지정된 이름의 값입니다.

그래서 당신은 이런 식으로 그것을 할 수 :

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

완벽하게 작동합니다. 감사! –

관련 문제