最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#獲取Description特性的擴(kuò)展類詳解

 更新時間:2022年06月24日 08:19:36   作者:time-flies  
這篇文章主要和大家詳細(xì)介紹一下C#獲取Description特性的擴(kuò)展類,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定的幫助,需要的可以參考一下

C#中Description特性主要用于枚舉和屬性,方法比較簡單,記錄一下以便后期使用。

擴(kuò)展類DescriptionExtension代碼如下:

using System;
using System.ComponentModel;
using System.Reflection;
 
/// <summary>
/// 描述特性的讀取擴(kuò)展類
/// </summary>
public static class DescriptionExtension
{
    /// <summary>
    /// 獲取枚舉的描述信息
    /// </summary>
    public static string GetDescription(this Enum em)
    {
        Type type = em.GetType();
        FieldInfo fd = type.GetField(em.ToString());
        string des = fd.GetDescription();
        return des;
    }



    /// <summary>
    /// 獲取屬性的描述信息
    /// </summary>
    public static string GetDescription(this Type type, string proName)
    {
        PropertyInfo pro = type.GetProperty(proName);
        string des = proName;
        if (pro != null)
        {
            des = pro.GetDescription();
        }
        return des;
    }



    /// <summary>
    /// 獲取屬性的描述信息
    /// </summary>
    public static string GetDescription(this MemberInfo info)
    {
        var attrs = (DescriptionAttribute[])info.GetCustomAttributes(typeof(DescriptionAttribute), false);
        string des = info.Name;
        foreach (DescriptionAttribute attr in attrs)
        {
            des = attr.Description;
        }
        return des;
    }
}

使用方法:

[Description("測試枚舉名")]
enum TestEnum 
{
    [Description("測試")]
    Test1 
}

[Description("測試類名")]
class TestClass
{
    [Description("測試class")]
    public int Test1 { get; set; }
}

//獲取枚舉類型的描述特性
string str1 = typeof(TestEnum).GetDescription();

//獲取枚舉值的描述特性
string str2 =TestEnum.Test1.GetDescription();
str2 = typeof(TestEnum).GetDescription(nameof(TestEnum.Test1));
str2 = typeof(TestEnum).GetDescription(TestEnum.Test1.ToString());

//獲取類的描述特性
string str3 = typeof(TestClass).GetDescription();

//獲取屬性的描述特性(也可以反射遍歷屬性列表)
string str4 = typeof(TestClass).GetDescription();
TestClass test = new TestClass();
str4 = typeof(TestClass).GetDescription(nameof(test.Test1));

補(bǔ)充:

C#利用擴(kuò)展方法獲得枚舉的Description

/// <summary>
/// 擴(kuò)展方法,獲得枚舉的Description
/// </summary>
/// <param name="value">枚舉值</param>
/// <param name="nameInstead">當(dāng)枚舉值沒有定義DescriptionAttribute,是否使用枚舉名代替,默認(rèn)是使用</param>
/// <returns>枚舉的Description</returns>
public static string GetDescription(this Enum value, Boolean nameInstead = true)
{
    Type type = value.GetType();
    string name = Enum.GetName(type, value);
    if (name == null)
    {
        return null;
    }
  
    FieldInfo field = type.GetField(name);
    DescriptionAttribute attribute = System.Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
  
    if (attribute == null && nameInstead == true)
    {
        return name;
    }
    return attribute?.Description;
}

隨便整一個枚舉

public enum ModuleType
 {
     /// <summary>
     /// 中國
     /// </summary>
     [Description("中國")]
     ZH = 1,
     /// <summary>
     /// 美國
     /// </summary>
     [Description("美國")]
     MG = 2
 }

到此這篇關(guān)于C#獲取Description特性的擴(kuò)展類詳解的文章就介紹到這了,更多相關(guān)C#獲取Description特性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c# 委托和事件實(shí)例學(xué)習(xí)

    c# 委托和事件實(shí)例學(xué)習(xí)

    今天把委托和事件研究了一個,winForm環(huán)境下,一般的小例子都是字符界面,我為了運(yùn)用一下,寫了winForm
    2009-01-01
  • C#特性(Attribute)

    C#特性(Attribute)

    這篇文章介紹了C#的特性(Attribute),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#處理JPEG頭信息的方法

    C#處理JPEG頭信息的方法

    相信大家肯定都看過用C或C++處理JPEG頭信息的程序了,我也看了,不過因?yàn)槲也欢瓹,看得我頭疼。所以我還是決定用C#來寫吧
    2013-05-05
  • C#新手常犯的錯誤匯總

    C#新手常犯的錯誤匯總

    這篇文章主要介紹了C#新手常犯的錯誤匯總,對于經(jīng)驗(yàn)豐富的C#程序員同樣具有很好的參考借鑒價值,需要的朋友可以參考下
    2014-08-08
  • Unity實(shí)現(xiàn)簡單的多人聊天工具

    Unity實(shí)現(xiàn)簡單的多人聊天工具

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)簡單的多人聊天工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#線程委托BeginInvoke與EndInvoke的用法

    C#線程委托BeginInvoke與EndInvoke的用法

    這篇文章介紹了C#線程委托BeginInvoke與EndInvoke的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C#遍歷DataSet控件實(shí)例總結(jié)

    C#遍歷DataSet控件實(shí)例總結(jié)

    這篇文章主要介紹了C#遍歷DataSet控件的用法,以實(shí)例形式總結(jié)歸納了常見的遍歷方法,具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2014-10-10
  • C#開發(fā)教程之FTP上傳下載功能詳解

    C#開發(fā)教程之FTP上傳下載功能詳解

    這篇文章主要為大家詳細(xì)介紹了C#開發(fā)教程之FTP上傳下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C#使用JArray和JObject封裝JSON對象

    C#使用JArray和JObject封裝JSON對象

    這篇文章介紹了C#使用JArray和JObject封裝JSON對象的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • js substr,substring與java substring和C# substring的區(qū)別解析

    js substr,substring與java substring和C# substring的區(qū)別解析

    本篇文章主要是對js中substr,substring與java中substring和C#中substring的區(qū)別進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01

最新評論

云南省| 宁国市| 清苑县| 高安市| 兴宁市| 夏邑县| 雅江县| 中超| 游戏| 顺昌县| 桓台县| 天门市| 广西| 永吉县| 垦利县| 太仆寺旗| 杭锦旗| 鹿邑县| 山东省| 抚州市| 西乌| 东阿县| 渝中区| 惠来县| 株洲县| 东乌| 东明县| 布尔津县| 同心县| 仁寿县| 谷城县| 榆树市| 博乐市| 喜德县| 铜陵市| 新源县| 乾安县| 南城县| 忻城县| 兴和县| 塔河县|