Почему приведение int к int Enum ведет себя по разному на разных компах?

Исходные данные:
Есть неправильное значение в файле настроек.
На моей машине код отрабатывает без проблем.
Хоть 4 и выходит за пределы допустимого в enum MaterialMerge, код отрабатывается.
А вот у клиента выдает ошибку при дальнейшем использовании значения. Что собственно правильно.
Собственно почему вдруг в одном случае работает, а в другом нет?
Версии NET
На моей машине
2.0.50727.5420 SP2
3.0.30729.5420 SP2
3.5.30729.5420 SP1
4.5.50938 Type:Client
4.5.50938
4.0.0.0 Type:Client
Клиента
2.0.50727.4927 SP:2
3.0.30729.4926 SP:2
3.5.30729.4926 SP:1
4.5.51650 Type:Client
4.5.51650
4.0.0.0 Type:Client

public static MaterialMerge MaterialMerge
            {
                get
                {
                    var option = GetMergeSetting<int>("SceneMaterialMerge"); // SceneMaterialMerge =  4, что выходит за пределы enum MaterialMerge
                    return (MaterialMerge)option;
                }
                set
                {
                    SetMergeSetting("SceneMaterialMerge", (int)value);
                }
            }
    public enum MaterialMerge
    {
        UseSceneMaterial,
        UseMergedMaterial,
        KeepName,
        AutoRename
    }
  • Вопрос задан
  • 2360 просмотров
Пригласить эксперта
Ответы на вопрос 2
Кажется мне, что дело в реализации GetMergeSetting(...). Не могли бы вы привести код этого метода?
И какое значение MaterialMerge в результате такого приведения получается на вашей машине? UseSceneMaterial?

ну и stackoverflow.com/questions/29482/cast-int-to-enum...

а еще, какого результата Вы хотите добиться? чтобы эксептило, в случае кривого значения, или проходило с каким то значением по умолчанию?
Ответ написан
Track77
@Track77 Автор вопроса
В общем баг оказался в прокладке между клавиатурой и креслом - ошибся со входными данными.
Не то тестировал - у меня работает так же и никакой мистики.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы