日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# .NET Core获取类属性/属性值,是否有属性/属性值,获取实体层描述,枚举描述,枚举英文获取枚举描述[Description(“xxx“)]

發布時間:2023/12/8 C# 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# .NET Core获取类属性/属性值,是否有属性/属性值,获取实体层描述,枚举描述,枚举英文获取枚举描述[Description(“xxx“)] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

屬性描述

定義為PropertyInfo的擴展方法

/// <summary> /// 獲取屬性描述 /// </summary> /// <param name="t"></param> /// <returns></returns> public static string GetDesc(this PropertyInfo t) {string des = ((DescriptionAttribute)Attribute.GetCustomAttribute(t, typeof(DescriptionAttribute)))?.Description ?? null;// 屬性描述return des; }

屬性相關操作

是否擁有某屬性,獲取某屬性值,設置某屬性值,是否擁有某字段,獲取某字段值,設置某字段值,獲取實體層描述

private static BindingFlags _bindingFlags { get; }= BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static; /// <summary> /// 是否擁有某屬性 /// </summary> /// <param name="obj"> 對象 </param> /// <param name="propertyName"> 屬性名 </param> /// <returns> </returns> public static bool ContainsProperty(this object obj, string propertyName) {return obj.GetType().GetProperty(propertyName, _bindingFlags) != null; }/// <summary> /// 獲取某屬性值 /// </summary> /// <param name="obj"> 對象 </param> /// <param name="propertyName"> 屬性名 </param> /// <returns> </returns> public static object GetPropertyValue(this object obj, string propertyName) {return obj.GetType().GetProperty(propertyName, _bindingFlags).GetValue(obj); }/// <summary> /// 設置某屬性值 /// </summary> /// <param name="obj"> 對象 </param> /// <param name="propertyName"> 屬性名 </param> /// <param name="value"> 值 </param> /// <returns> </returns> public static void SetPropertyValue(this object obj, string propertyName, object value) {obj.GetType().GetProperty(propertyName, _bindingFlags).SetValue(obj, value); }/// <summary> /// 是否擁有某字段 /// </summary> /// <param name="obj"> 對象 </param> /// <param name="fieldName"> 字段名 </param> /// <returns> </returns> public static bool ContainsField(this object obj, string fieldName) {return obj.GetType().GetField(fieldName, _bindingFlags) != null; }/// <summary> /// 獲取某字段值 /// </summary> /// <param name="obj"> 對象 </param> /// <param name="fieldName"> 字段名 </param> /// <returns> </returns> public static object GetGetFieldValue(this object obj, string fieldName) {return obj.GetType().GetField(fieldName, _bindingFlags).GetValue(obj); }/// <summary> /// 設置某字段值 /// </summary> /// <param name="obj"> 對象 </param> /// <param name="fieldName"> 字段名 </param> /// <param name="value"> 值 </param> /// <returns> </returns> public static void SetFieldValue(this object obj, string fieldName, object value) {obj.GetType().GetField(fieldName, _bindingFlags).SetValue(obj, value); }/// <summary> /// 獲取某字段值 /// </summary> /// <param name="obj"> 對象 </param> /// <param name="methodName"> 方法名 </param> /// <returns> </returns> public static MethodInfo GetMethod(this object obj, string methodName) {return obj.GetType().GetMethod(methodName, _bindingFlags); } /// <summary> /// 獲取實體層描述 /// </summary> /// <param name="value"> </param> /// <param name="Name"> </param> /// <returns> </returns> public static string GetEntityDescription(this Type value, string Name) {PropertyDescriptor s = TypeDescriptor.GetProperties(value)[Name];DescriptionAttribute description = s == null ? null : s.Attributes[typeof(DescriptionAttribute)] as DescriptionAttribute;return description == null ? "" : description.Description; }/// <summary> /// 獲取實體層描述 /// </summary> /// <param name="s"> </param> /// <returns> </returns> public static string GetEntityDescription(this PropertyDescriptor s) {DescriptionAttribute description = s == null ? null : s.Attributes[typeof(DescriptionAttribute)] as DescriptionAttribute;return description == null ? "" : description.Description; }

枚舉描述

定義為擴展方法

/// <summary>/// 獲取枚舉描述/// </summary>/// <param name="value"> 枚舉值 </param>/// <returns> </returns>public static string GetDescription(this Enum value){DescriptionAttribute attribute = value.GetType().GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false).SingleOrDefault() as DescriptionAttribute;return attribute == null ? value.ToString() : attribute.Description;}/// <summary>/// 知道枚舉,傳入枚舉英文,獲取描述/// </summary>/// <param name="value"> </param>/// <param name="Name"> </param>/// <returns> </returns>public static string GetDescription(this Type value, string Name){DescriptionAttribute attribute = value.GetField(Name).GetCustomAttributes(typeof(DescriptionAttribute), false).SingleOrDefault() as DescriptionAttribute;return attribute == null ? value.ToString() : attribute.Description;}

總結

以上是生活随笔為你收集整理的C# .NET Core获取类属性/属性值,是否有属性/属性值,获取实体层描述,枚举描述,枚举英文获取枚举描述[Description(“xxx“)]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。