개체를 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);
}
}
내가 그렇게 당신이 무슨 일이 일어나고 있는지 얻을 매우 명시 적으로 왼쪽 대신 생성자의