Gå til innhold

Anbefalte innlegg

Hei, driver å oppdaterer en klient skrevet i C# der pakkene er definert som enum:

   enum PServer : byte
   {
       //KeyPacket = 0x00,
       VersionCheck = 0x00, //KeyPacket
       MTL = 0x01,
       NS = 0x02,
       CI = 0x03,
       UI = 0x04,
       Attack = 0x05,
       Die = 0x06,
       Revive = 0x07
       osv... ca 250 element
   }

Ønsker nå å kjøre en test slik at jeg kan beholde kompabiliteten til 2 versjoner som dette:

if (Globals.Version == 1)
{
   enum PServer : byte
   {
       //KeyPacket = 0x00,
       VersionCheck = 0x00, //KeyPacket
       MTL = 0x01,
       NS = 0x02,
       CI = 0x03,
       UI = 0x04,
       Attack = 0x05,
       Die = 0x06,
       Revive = 0x07
       osv... ca 250 element
   }
}
else
{
   enum PServer : byte
   {
       VersionCheck = 0x2E, //KeyPacket
       MTL = 0x2F,

       NS = 0x30,
       CI = 0x31,
       UI = 0x32,
       Attack = 0x33
       osv
    }
}

men vet at det ikke er mulig å endre verdiene i enum uten videre. Finnes det noe brukbart alternativ som har de samme mulighetene som enum (kjører bl.a. en switch på PServer), bare at det går an å endre verdiene?

Lenke til kommentar
Videoannonse
Annonse

Dictionary klassen. Eksekmpelvis kan du ha en enum:

public enum Fields
{
 VersionCheck,
 MTL,
 NS,
 CI,
 UI,
 Attack
}
public static class VersionInterop
{
 public static Dictionary<Fields, byte> GetPSVersion(int version)
 {
   var ret = new Dictionary<Fields, byte>();
   if(version == 0)
   {
     ret.Add(Fields.VersionCheck, 0x00);
     // etc.
   }
   else if(version == 1)
   {
     // etc.
   }
 }
}

Det er ikke like effektivt som enum, men ettersom du har et system som uheldigvis ikke er bakoverkompatibelt, kan ikke konstanter som enums brukes.

 




			
		
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...