首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dotnet核中的Enum描述属性

dotnet核中的Enum描述属性
EN

Stack Overflow用户
提问于 2016-05-18 17:04:17
回答 5查看 27.5K关注 0票数 17

在点网络CLI中有Enum的Description属性吗?(网点网核心RC2)如果没有,还有其他选择吗?

EN

回答 5

Stack Overflow用户

发布于 2019-03-25 13:09:52

我必须修改@yaniv的答案,才能使用DescriptionAttribute类型并获得Description字段。

代码语言:javascript
复制
public static class EnumExtensions
{
    /// <summary>
    /// Get the Description from the DescriptionAttribute.
    /// </summary>
    /// <param name="enumValue"></param>
    /// <returns></returns>
    public static string GetDescription(this Enum enumValue)
    {
        return enumValue.GetType()
                   .GetMember(enumValue.ToString())
                   .First()
                   .GetCustomAttribute<DescriptionAttribute>()?
                   .Description ?? string.Empty;
    }
}
票数 17
EN

Stack Overflow用户

发布于 2017-01-05 16:27:55

我将此用于我的Net实现:

代码语言:javascript
复制
public static class EnumerationExtension
{
    public static string Description( this Enum value )
    {
        // get attributes  
        var field = value.GetType().GetField( value.ToString() );
        var attributes = field.GetCustomAttributes( typeof( DescriptionAttribute ), false );

        // return description
        return attributes.Any() ? ( (DescriptionAttribute)attributes.ElementAt( 0 ) ).Description : "Description Not Found";
    }
}

这对NetCore不起作用,所以我对它进行了修改,以完成以下操作:

代码语言:javascript
复制
public static class EnumerationExtension
{
    public static string Description( this Enum value )
    {
        // get attributes  
        var field = value.GetType().GetField( value.ToString() );
        var attributes = field.GetCustomAttributes( false );

        // Description is in a hidden Attribute class called DisplayAttribute
        // Not to be confused with DisplayNameAttribute
        dynamic displayAttribute = null;

        if (attributes.Any())
        {
            displayAttribute = attributes.ElementAt( 0 );
        }

        // return description
        return displayAttribute?.Description ?? "Description Not Found";
    }
}

枚举示例:

代码语言:javascript
复制
public enum ExportTypes
{
    [Display( Name = "csv", Description = "text/csv" )]
    CSV = 0
}

静态添加的示例使用情况如下:

代码语言:javascript
复制
var myDescription = myEnum.Description();
票数 11
EN

Stack Overflow用户

发布于 2016-05-22 14:24:55

was added to CoreFX,但只在RC2之后。因此,它将存在于RTM版本中,而不是在RC2中。根据您想要做的事情,创建您自己的属性可能会有效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37305985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档