添加项目文件。

This commit is contained in:
2025-02-28 22:23:13 +08:00
parent d4ad2fe2de
commit 547a1b3bf6
416 changed files with 72830 additions and 0 deletions

View File

@@ -0,0 +1,143 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrpaonEMS.App.Com
{
public static class EnumExtension
{
#region
public static Attribute GetEnumAttribute(this Enum value, Type attribute)
{
var enumType = value.GetType();
var name = Enum.GetName(enumType, value);
if (name != null)
{
// 获取枚举字段。
var fieldInfo = enumType.GetField(name);
if (fieldInfo != null)
{
// 获取描述的属性。
var attr = Attribute.GetCustomAttribute(fieldInfo,
attribute, false);
return attr;
}
}
return null;
}
public static T GetEnumAttribute<T>(this Enum value)
{
var enumType = value.GetType();
var name = Enum.GetName(enumType, value);
if (name != null)
{
// 获取枚举字段。
var fieldInfo = enumType.GetField(name);
if (fieldInfo != null)
{
// 获取描述的属性。
var attr = Attribute.GetCustomAttribute(fieldInfo, typeof(T), false);
return (T)(object)attr;
}
}
return default(T);
}
/// <summary>
/// 获取枚举描述内容;
/// </summary>
/// <param name="value"></param>
/// <param name="defaultval"></param>
/// <returns></returns>
public static string GetEnumDescription(this Enum value, string defaultval = "")
{
var attr = GetEnumAttribute(value, typeof(DescriptionAttribute));
return (attr as DescriptionAttribute)?.Description ?? defaultval;
}
#endregion
#region
/// <summary>
/// 通过枚举对象获取枚举列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static List<T> GetEnumList<T>(this T value)
{
var list = new List<T>();
if (value is Enum)
{
var valData = Convert.ToInt32((T)Enum.Parse(typeof(T), value.ToString()));
var tps = Enum.GetValues(typeof(T));
list.AddRange(from object tp in tps where ((int)Convert.ToInt32((T)Enum.Parse(typeof(T), tp.ToString())) & valData) == valData select (T)tp);
}
return list;
}
/* 参考https://www.codenong.com/17123548/ */
/// <summary>
/// 通过枚举类型获取枚举列表;
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static List<T> GetEnumList<T>() where T : Enum
{
List<T> list = Enum.GetValues(typeof(T)).OfType<T>().ToList();
return list;
}
/* 参考https://www.codenong.com/105372/ */
/// <summary>
/// Gets all items for an enum value.(通过枚举对象获取所有枚举)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value">The value.</param>
/// <returns></returns>
public static IEnumerable<T> GetAllItems<T>(this Enum value)
{
foreach (object item in Enum.GetValues(typeof(T)))
{
yield return (T)item;
}
}
/// <summary>
/// Gets all items for an enum type.(通过枚举类型获取所有枚举)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static IEnumerable<T> GetAllItems<T>() where T : struct
{
foreach (object item in Enum.GetValues(typeof(T)))
{
yield return (T)item;
}
}
#endregion
/// <summary>
/// 将枚举转换为值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static T ToValue<T>(this Enum value) where T : struct
{
return (T)(object)value;
}
}
}