// Decode a single layer private static string DecodeLayer(int index, string payload, IDecoder decoder) { switch(index) { // Decode layer using the appropriate layer logic and selected decoder case 0: return LayerFactory.InitializeLayer(LayerEnum.Layer0).Decode(payload, decoder); case 1: return LayerFactory.InitializeLayer(LayerEnum.Layer1).Decode(payload, decoder); case 2: return LayerFactory.InitializeLayer(LayerEnum.Layer2).Decode(payload, decoder); case 3: return LayerFactory.InitializeLayer(LayerEnum.Layer3).Decode(payload, decoder); case 4: return LayerFactory.InitializeLayer(LayerEnum.Layer4).Decode(payload, decoder); case 5: return LayerFactory.InitializeLayer(LayerEnum.Layer5).Decode(payload, decoder); default: throw new ArgumentException("Invalid layer index provided"); } }