Created
October 3, 2020 12:53
-
-
Save binary1230/0f7e0642d84ff4ddbdc474c78d057b7d to your computer and use it in GitHub Desktop.
Revisions
-
binary1230 created this gist
Oct 3, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,50 @@ // just some quick snippets for GUI / Winforms / C# / etc // these might not be the best ways to do this stuff, was just working on some ideas // example of an enum with Description() applied public enum ROMMapMode : byte { LoROM, HiROM, ExHiROM, [Description("SA - 1 ROM")] SA1ROM, [Description("SA-1 ROM (FuSoYa's 8MB mapper)")] ExSA1ROM, SuperFX, [Description("Super MMC")] SuperMMC, ExLoROM } // take a enum type that has [Description] attributes, // return a List with with kvp pairs of enum vs description public static List<KeyValuePair<TEnum, string>> GetEnumDescriptions<TEnum>() where TEnum : Enum { var type = typeof(TEnum); return Enum.GetValues(type) .Cast<TEnum>() .Select(value => new KeyValuePair<TEnum, string>(key: value, value: GetEnumDescription(value)) ) .OrderBy(item => item.Key) .ToList(); } public class EnumMapper<TEnum> where TEnum : Enum { public TEnum Source { get; set; } // surely... there is some third party library that handles this. // for now, here we are. public int SelectedIndex { get => Convert.ToInt32(Source); set => Source = (TEnum)Enum.ToObject(typeof(TEnum), value); } public List<KeyValuePair<TEnum, string>> Descriptions { get; } = Util.GetEnumDescriptions<TEnum>(); } var mapper = new EnumMapper<Data.ROMMapMode>();