Konwersja pomiędzy dwoma dużymi enumami

0

Mam dwa dość duże enumy (jeden ma ~60 wartości, drugi ~100). Potrzebuję przekonwertować jeden typ na drugi. Obecnie mam gigantycznego switcha. Jaka jest lepsza praktyka? Powinienem użyć Dictionary<Enum1, Enum2>? A może dać sobie spokój? ;-)

0

zalezy, jezeli ten if jest w miare czytelny i nie jest porozwalany (bo zapewne ten pierwszy enum moze miec kilka wartosci tego drugiego) to bym zostawil. I jezeli jest to jedyne miejsce uzywane do tlumaczenia enuma.

Jezeli jest wiecej miejsc uzywanych to koniecznie przerobilbym to na Dictionary<enum1, enum2>

No i ostatnie jezeli

jezeli Ci sie chce to oczywiscie, ze zmien ;) Mi osobiscie by nie chcialo, jezeli to jest jedyne miejsce użycia i bedzie to jedyne miejsce użycia tego tłumaczenia. (W sensie biznesowym jest to strata czasu)

0

Jeśli jest to możliwe, to ja bym to zrobił tak:

enum FirstEnum
{
     SomeEnum1 = 1,
     SomeEnum2 = 2,
     SomeEnum3 = 2
}

enum SecondEnum
{
    MyEnum1 = 1,
    MyEnum2 = 2,
    MyEnum3 = 3
}


static SecondEnum ToSecondEnum(FirstEnum firstEnum)//albo użyć extension method
{
     var firstEnumVal = (int)firstEnum;
     return (SecondEnum)firstEnumVal;
}
0

enum FirstEnum i enum SecondEnum jak w przykładzie @dam1ana.

SecondEnum[] FirstToSecond = {MyEnum2, MyEnum2, MyEnum1}; // tablica konwersji. zawartość według potrzeby.
var fe = FirstEnum.SomeEnum1;

var se = FirstToSecond[(int)fe]; // MyEnum2
0
karolinaa napisał(a):

lepsza jest mapa albo jak w enumie możesz dać pola. ale nie wiem czy macie to w C# , bo my w javie mamy ;]

Ale mapę/słownik nadal muszę wypełnić, więc nadal mam funkcję dłuuuugo poza jednym ekranem. I mnie by maniacy czystego kodu pobili.

zalezy, jezeli ten if jest w miare czytelny i nie jest porozwalany (bo zapewne ten pierwszy enum moze miec kilka wartosci tego drugiego) to bym zostawil. I jezeli jest to jedyne miejsce uzywane do tlumaczenia enuma.

To jest akurat switch, ale nadal - jest olbrzymi. Ale to tylko jedna funkcja.

Jeśli jest to możliwe, to ja bym to zrobił tak:

enum FirstEnum
{
     SomeEnum1 = 1,
     SomeEnum2 = 2,
     SomeEnum3 = 2
}

Niestety - cały sens jest taki, że enum opakowuje pewne wartości numeryczne, nie ma pomiędzy nimi zależności matematycznej absolutnie żadnej, konwersja na inta nie wchodzi w grę.

Ogólnie - zostawiłem w spokoju, mam 80 liniową funkcję i jestem szczęśliwy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1