2014-11-07 1 views
2

나는 C#으로 다른 깃발 열거에 신고 열거 변환

[Flags] 
public enum EnumTypeOne: ulong 
{ 
    NONE     = 0, 
    STUFF_ONE    = (1 << 0), 
    STUFF_TWO    = (1 << 1) 
} 

[Flags] 
public enum EnumTypeTwo: ulong 
{ 
    NONE     = 0, 
    STUFF_ONE    = (1 << 0), 
    STUFF_TWO    = (1 << 1) 
} 

하나 열거 형 (내부 전용) 하나의 클래스 라이브러리 내부이고, 다른 하나는로 제공됩니다 다음

같은 모양이 신고 열거가 dll.

내부적으로이 두 열거 형이 동일하기 때문에 내부적으로 마샬링하고 싶습니다. 나는 일반 열거 형을 사용하여이 작업을 수행하는 방법을 알고 있지만 열거 형 중 하나에 둘 이상의 플래그가 설정된 경우에는 작동하지 않는 것처럼 보입니다.

나는 그것이 떨어지 단 하나의 플래그가 사용중인 경우에만 이렇게 위에서 언급 한 바와 같이

var enumResult = (EnumTypeOne)Enum.Parse(typeof(EnumTypeOne), Enum.GetName(typeof(EnumTypeTwo), mEnumTypeTwo); 

는 여러 개의 플래그의 사용이 호출하는 다음과 같은 솔루션을 사용하여 시도했다.

두 열거 형을 효율적으로 변환 할 수있는 솔루션이 있습니까?

답변

11

그냥

EnumTypeOne a = EnumTypeOne.STUFF_ONE|EnumTypeOne.STUFF_TWO; 
EnumTypeTwo b = (EnumTypeTwo)a; 
+0

덕분에 캐스팅, 그것은이 간단 할 것이라고 생각하지 않았다! –

+2

@const_ref : enum은 밑에있는 정수이기 때문에 값이 같은 것을 의미하면 그대로 둘 사이를 변환하는 것이 안전합니다. – siride

+0

@siride 나는 이것이 후드 밑의 ulong이라는 것을 알았지 만, 열거 형을 enum으로 변환 할 때 과거에 어려움을 겪었고 실제로는 그렇게 간단하지 않다고 생각했다. 건배 –