using System; using System.Collections.Generic; using System.Reflection; using System.Text; namespace skyscraper2.TsDuckInterface { class DeliverySystem { public string Name { get; } private DeliverySystem(string name) { Name = name; } public override string ToString() { return Name; } public static readonly DeliverySystem ATSC = new DeliverySystem("ATSC"); public static readonly DeliverySystem ATSC_MH = new DeliverySystem("ATSC-MH"); public static readonly DeliverySystem CMMB = new DeliverySystem("CMMB"); public static readonly DeliverySystem DAB = new DeliverySystem("DAB"); public static readonly DeliverySystem DSS = new DeliverySystem("DSS"); public static readonly DeliverySystem DTMB = new DeliverySystem("DTMB"); public static readonly DeliverySystem DVB_C = new DeliverySystem("DVB-C"); public static readonly DeliverySystem DVB_C_AnnexA = new DeliverySystem("DVB-C/A"); public static readonly DeliverySystem DVB_C_AnnexB = new DeliverySystem("DVB-C/B"); public static readonly DeliverySystem DVB_C_AnnexC = new DeliverySystem("DVB-C/C"); public static readonly DeliverySystem DVB_C2 = new DeliverySystem("DVB-C2"); public static readonly DeliverySystem DVB_H = new DeliverySystem("DVB-H"); public static readonly DeliverySystem DVB_S = new DeliverySystem("DVB-S"); public static readonly DeliverySystem DVB_S_Turbo = new DeliverySystem("DVB-S-Turbo"); public static readonly DeliverySystem DVB_S2 = new DeliverySystem("DVB-S2"); public static readonly DeliverySystem DVB_T = new DeliverySystem("DVB-T"); public static readonly DeliverySystem DVB_T2 = new DeliverySystem("DVB-T2"); public static readonly DeliverySystem ISDB_C = new DeliverySystem("ISDB-C"); public static readonly DeliverySystem ISDB_S = new DeliverySystem("ISDB-S"); public static readonly DeliverySystem ISDB_T = new DeliverySystem("ISDB-T"); public static DeliverySystem FromString(string name) { if (name.Equals("S1")) return DVB_S; if (name.Equals("S2")) return DVB_S2; name = name.Replace('_', '-'); FieldInfo[] fieldInfos = typeof(DeliverySystem).GetFields(); foreach (FieldInfo fieldInfo in fieldInfos) { DeliverySystem value = (DeliverySystem)fieldInfo.GetValue(null); if (value.Name.ToLowerInvariant().Equals(name.ToLowerInvariant())) return value; } throw new ArgumentException("Unsupported delivery system"); } } }