Очевидно, что somevalue является целым числом, а не явно напечатано как ваше перечисление. Следует помнить, что базовое значение перечисления является просто «типом хранения» и не является неявно взаимозаменяемым. Однако вы можете легко использовать оператор приведения, чтобы сделать ваш код простым и безопасным для типов:
private enum MyEnum { Value1, Value2, Value3 }
switch ((MyEnum)somevalue)
{
case MyEnum.Value1:
someothervar = "ss";
break;
case MyEnum.Value2:
someothervar = "yy";
break;
case MyEnum.Value3:
someothervar = "gg";
break;
default:
throw new NotSupportedException();
}
В конце концов вам нужен дизайн, в котором вам не нужно было преобразовывать целое число в перечисление, но часто при чтении с диска или БД это не так.