| | |
| | | |
| | | namespace FlexJobApi.Core |
| | | { |
| | | /// <summary> |
| | | /// 枚举工具 |
| | | /// </summary> |
| | | public static class EnumUtils |
| | | { |
| | | /// <summary> |
| | | /// 获取模型 |
| | | /// </summary> |
| | | /// <typeparam name="T"></typeparam> |
| | | /// <returns></returns> |
| | | public static async Task<EnumModel<T>> GetModel<T>() |
| | | where T : struct |
| | | { |
| | | var type = typeof(T); |
| | | var model = new EnumModel<T>(); |
| | | var xmlDoc = await XmlDocUtils.GetXmlDocAsync(); |
| | | var xmlDocMember = await XmlDocUtils.GetXmlDocMemberAsync(type, xmlDoc); |
| | | model.Name = type.Name; |
| | | model.Description = xmlDocMember?.Summary; |
| | | |
| | | foreach (var enumValue in Enum.GetValues(type)) |
| | | { |
| | | var item = new EnumModelItem<T>(); |
| | | item.Name = enumValue.ToString(); |
| | | item.Value = (int)enumValue; |
| | | item.Enum = (T)enumValue; |
| | | var enumMember = type.GetMember(enumValue.ToString()).FirstOrDefault(); |
| | | var enumXmlDocMember = await XmlDocUtils.GetXmlDocMemberAsync(enumMember, xmlDoc); |
| | | item.Description = enumXmlDocMember?.Summary; |
| | | model.Items.Add(item); |
| | | } |
| | | return model; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取模型 |
| | | /// </summary> |
| | | /// <param name="type"></param> |
| | | /// <returns></returns> |
| | | public static async Task<EnumModel> GetModel(this Type type) |
| | | { |
| | | var model = new EnumModel(); |
| | |
| | | } |
| | | return model; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取枚举 |
| | | /// </summary> |
| | | /// <typeparam name="T"></typeparam> |
| | | /// <param name="model"></param> |
| | | /// <param name="name"></param> |
| | | /// <returns></returns> |
| | | public static T GetEnum<T>(this EnumModel<T> model, string name) |
| | | where T : struct |
| | | { |
| | | return model.Items |
| | | .Where(it => it.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) |
| | | .Select(it => it.Enum) |
| | | .FirstOrDefault(); |
| | | } |
| | | } |
| | | } |