2014-07-04 2 views
1

개체를 Enum으로 변환하려고합니다. 리플렉션을 통해 처리 중이며 해당 개체의 형식 정보 만 있습니다. 내가 가지고있는 정보가 정보와 INT가있는 "원래"값을 입력입니다 내가 열거와 객체 값을 설정하려고 내 방법 지금 "invalid"int 값을 가진 Enum.ToObject - 수정 방법

public enum Foo : int 
{ 
    Apple = 1, 
    Banana = 2, 
    Orange = 3, 
} 

: 여기

내 열거입니다 .

public class Bar 
{ 
    public Bar() 
    { 
     var enumValue = GetEnumValue(typeof(Foo), 0); 
    } 

    public object GetEnumValue(Type enumType, object value) 
    { 
     return Enum.ToObject(enumType, value); 
    } 
} 

이 코드는 지금까지 노력하고 있지만, "작은"문제가, 당신이 내 Foo Enum (Apple = 1, Banana = 2, Orange = 3)과 내 GetEnumValue(typeof(Foo), 0) 내 두 번째 매개 변수에 수정 값을 선언하고 있음을 눈치 챘을 수도 0입니다.

이 내 열거 형에 지정된 값이 아니기 때문에 Enum.ToObject()이 예외를 throw하지 않거나 그저 작동하는 것만 있습니다.

GetEnumValue이 잘못된 값으로 호출되면 반환 값이 기본 열거 형 값이되도록이 문제를 해결하고 싶습니다.

기본 열거 형 값은 null 허용 열거 형 null이어야하며 null이 아닌 열거 형 열거 형은 내 경우에는 Apple이어야합니다.

 public Bar(int value) 
     { 
      if (Enum.IsDefined(typeof(Foo), value)) 
      { 
       var enumValue = GetEnumValue(typeof(Foo), value); 
      } 
      else 
      { 
       var enumValue = GetEnumValue(typeof(Foo), 1); 

       //or like this... 
       var enumValue1 = Enum.GetValues(typeof(Foo)).GetValue(0); 
      } 
     } 

내가 그렇게 당신이 무슨 일이 일어나고 있는지 얻을 매우 명시 적으로 왼쪽 대신 생성자의

답변

관련 문제