using System; using System.Collections; using System.Collections.Generic; namespace NaughtyAttributes { [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] public class DropdownAttribute : DrawerAttribute { public string ValuesFieldName { get; private set; } public DropdownAttribute(string valuesFieldName) { this.ValuesFieldName = valuesFieldName; } } public interface IDropdownList : IEnumerable> { } public class DropdownList : IDropdownList { private List> values; public DropdownList() { this.values = new List>(); } public void Add(string displayName, T value) { this.values.Add(new KeyValuePair(displayName, value)); } public IEnumerator> GetEnumerator() { return this.values.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } public static explicit operator DropdownList(DropdownList target) { DropdownList result = new DropdownList(); foreach (var kvp in target) { result.Add(kvp.Key, kvp.Value); } return result; } } }