using System.Collections; using System; using System.Collections.Generic; namespace NaughtyAttributes { [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] public class DropdownAttribute : DrawerAttribute { public string ValuesName { get; private set; } public DropdownAttribute(string valuesName) { ValuesName = valuesName; } } public interface IDropdownList : IEnumerable> { } public class DropdownList : IDropdownList { private List> _values; public DropdownList() { _values = new List>(); } public void Add(string displayName, T value) { _values.Add(new KeyValuePair(displayName, value)); } public IEnumerator> GetEnumerator() { return _values.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return 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; } } }