public static object GetEnumByKey(Type enumType, string key)
        {
            KeyedEnumItemCollection enumItems = GetKeyedEnumItems(enumType);
            EnumItem item = enumItems[key];

            return(item == null ? enumItems.Default.Object : item.Object);
        }
        public static KeyedEnumItemCollection GetKeyedEnumItems(Type enumType)
        {
            KeyedEnumItemCollection enumItems = null;
            EnumTypeCacheItem       cacheItem = null;

            if (EnsureCacheFilled(enumType, out cacheItem))
            {
                enumItems = cacheItem.KeyedEnumItems;
            }

            return(enumItems);
        }