2012-06-05 2 views
3

2 개의 다른 객체에 2 개의 열거 형이 있습니다. 객체 # 1의 enum을 객체 # 2의 enum과 동일하게 설정하려고합니다.하나의 열거 형을 다른 열거 형으로 설정하십시오.

namespace MVC1 { 

    public enum MyEnum { 
     firstName, 
     lastName 
     } 

    public class Obj1{ 
     public MyEnum enum1; 
    } 
    } 


    namespace MVC2 { 

    public enum MyEnum { 
     firstName, 
     lastName 
     } 

    public class Obj2{ 
     public MyEnum enum1; 
     } 
    } 

내가이 작업을 수행 할 수 있지만,이 실 거예요 컴파일 :

여기 내 개체는 내가 obj2보다에서 열거 동일 OBJ1의 열거를 설정하는 방법

MVC1.Obj1 obj1 = new MVC1.Obj1(); 
MVC2.Obj2 obj2 = new MVC2.Obj2(); 
obj1.enum1 = obj2.enum1; //I know this won't work. 

? 당신이 그 (것)들에게 동일하게 유지한다고 가정하면 감사

+0

왜 처음에는 동일한 값을 가진 두 개의 enum을 사용합니까? 하나의 정의를 제거하고 다른 곳에서 사용 된 곳마다 교체하십시오. – Servy

답변

7

, 당신은 INT로/캐스트 할 수 있습니다 : 그것은 범위에 있는지가 확인된다 할

obj1.enum1 = (MVC1.MyEnum)((int)obj2.enum1); 
2

가장 좋은 방법을 Enum.IsDefined를 사용하여 :

int one = (int)obj2.enum1; 
if (Enum.IsDefined(typeof(MVC1.MyEnum), one)) { 
    obj1.enum1 = (MVC1.MyEnum)one; 
} 

obj1.enum1 = (MVC1.MyEnum) Enum.Parse(typeof(MVC1.MyEnum), 
           ((int)obj2.enum1).ToString()); 

또는

int one = (int)obj2.enum1; 
obj1.enum1 = (MVC1.MyEnum)one; 
+0

기본 형식 (및 열거 형 값)은 여기에서 완전히 동일합니다. 이 방법을 사용하면 대규모 프로젝트에서 많은 성능 손실이 발생할 수 있습니다. (타입 변환, 캐스팅, 문자열 변환 및 파싱) – lesderid

+0

@lesderid -하지만 먼저 체크하는 것이 더 좋다고 생각합니다. 요구 사항이 다음과 같으면 이미 다른 방법을 추가했습니다. –

+0

" 가장 안전한 방법 "이라고 말했다. 주조 할 때 문제가 발생하지 않으며 예기치 않은 값만 있습니다. 이것이 바로 이와 같은 상황에서 처음에 열거 형을 캐스팅해서는 안되며 동일한 열거 형이 아닌 두 개의 열거 형 만 있어야합니다. – lesderid

5

Enum에는 기본적으로 int (System.Int32) 인 기본 정수 유형이 있지만 "enum MyEnum : type"을 사용하여 명시 적으로 지정할 수도 있습니다. 당신이 두 개의 서로 다른 네임 스페이스에서 작업하기 때문에

는 열거 유형은 본질적으로 다르지만, 그들의 기본 유형이 동일하기 때문에, 당신은 단지 그들을 캐스팅 할 수 있습니다

obj1.enum1 = (MVC1.MyEnum) obj2.enum1; 

메모 : C#에서 당신은 매개 변수가없는 경우에도 함수 호출에 괄호를 사용합니다. 그것들을 생성자 호출에 추가해야합니다.

+0

이봐, 너는 그런 열거 형을 직접 만들 수 있다는 것을 몰랐다. 나는 항상 기본 유형으로 /에서 변환했습니다! 매일 새로운 것을 배우십시오. :) +1 –

+0

나는 어느 쪽 인지도 모르겠다 고 말해야한다. 그러나 당신은 방금 그것을 확인했다. : D – lesderid

+0

나는 어느 쪽 인지도 확실하지 않았다. 그래서 나는 빠른 스크립트를 채찍질하고 값을 확인해야했다. :피 –