update:反射获取枚举类型
This commit is contained in:
23
Api/Ewide.Core/Service/Dict/Dto/EnumDictOutput.cs
Normal file
23
Api/Ewide.Core/Service/Dict/Dto/EnumDictOutput.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Ewide.Core.Service.Dict.Dto
|
||||||
|
{
|
||||||
|
public class EnumDictOutput
|
||||||
|
{
|
||||||
|
public string FullName { get; set; }
|
||||||
|
public string Desc { get; set; }
|
||||||
|
public string Code { get; set; }
|
||||||
|
public List<EnumDictData> Datas { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EnumDictData
|
||||||
|
{
|
||||||
|
public string Desc { get; set; }
|
||||||
|
public string Code { get; set; }
|
||||||
|
public string Value { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Ewide.Core.Service.Dict.Dto;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@@ -16,5 +17,6 @@ namespace Ewide.Core.Service
|
|||||||
Task<dynamic> GetDictTypeList();
|
Task<dynamic> GetDictTypeList();
|
||||||
Task<dynamic> QueryDictTypePageList([FromQuery] DictTypeInput input);
|
Task<dynamic> QueryDictTypePageList([FromQuery] DictTypeInput input);
|
||||||
Task UpdateDictType(UpdateDictTypeInput input);
|
Task UpdateDictType(UpdateDictTypeInput input);
|
||||||
|
Task<List<EnumDictOutput>> GetEnumDictDataList([FromQuery] DictTypeInput input);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using Ewide.Core.Extension;
|
using Ewide.Core.Extension;
|
||||||
|
using Ewide.Core.Service.Dict.Dto;
|
||||||
using Furion.DatabaseAccessor;
|
using Furion.DatabaseAccessor;
|
||||||
using Furion.DatabaseAccessor.Extensions;
|
using Furion.DatabaseAccessor.Extensions;
|
||||||
using Furion.DependencyInjection;
|
using Furion.DependencyInjection;
|
||||||
@@ -10,7 +11,9 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Ewide.Core.Service
|
namespace Ewide.Core.Service
|
||||||
@@ -212,5 +215,36 @@ namespace Ewide.Core.Service
|
|||||||
return dtype.Pids + "[" + pid + "],";
|
return dtype.Pids + "[" + pid + "],";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[HttpGet("/sysDictType/enumDictList")]
|
||||||
|
public Task<List<EnumDictOutput>> GetEnumDictDataList([FromQuery] DictTypeInput input)
|
||||||
|
{
|
||||||
|
var typeList = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsEnum);
|
||||||
|
typeList = typeList.Concat(Assembly.Load("Ewide.Application").GetTypes().Where(t => t.IsEnum));
|
||||||
|
var list = new List<EnumDictOutput>();
|
||||||
|
foreach (var type in typeList)
|
||||||
|
{
|
||||||
|
var dictType = new EnumDictOutput
|
||||||
|
{
|
||||||
|
Desc = type.GetCustomAttribute<DescriptionAttribute>()?.Description,
|
||||||
|
FullName = type.FullName,
|
||||||
|
Code = type.Name,
|
||||||
|
Datas = new List<EnumDictData>(),
|
||||||
|
};
|
||||||
|
var fields = type.GetFields(BindingFlags.Static | BindingFlags.Public);
|
||||||
|
foreach (var field in fields)
|
||||||
|
{
|
||||||
|
var value = field.GetValue(null);
|
||||||
|
var dictData = new EnumDictData
|
||||||
|
{
|
||||||
|
Desc = field.GetCustomAttribute<DescriptionAttribute>()?.Description,
|
||||||
|
Code = field.Name,
|
||||||
|
Value = Convert.ChangeType(value, Enum.GetUnderlyingType(value.GetType())).ToString(),
|
||||||
|
};
|
||||||
|
dictType.Datas.Add(dictData);
|
||||||
|
}
|
||||||
|
list.Add(dictType);
|
||||||
|
}
|
||||||
|
return Task.FromResult(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user