在点网络CLI中有Enum的Description属性吗?(网点网核心RC2)如果没有,还有其他选择吗?
发布于 2019-03-25 13:09:52
我必须修改@yaniv的答案,才能使用DescriptionAttribute类型并获得Description字段。
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;
}
}发布于 2017-01-05 16:27:55
我将此用于我的Net实现:
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不起作用,所以我对它进行了修改,以完成以下操作:
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";
}
}枚举示例:
public enum ExportTypes
{
[Display( Name = "csv", Description = "text/csv" )]
CSV = 0
}静态添加的示例使用情况如下:
var myDescription = myEnum.Description();发布于 2016-05-22 14:24:55
was added to CoreFX,但只在RC2之后。因此,它将存在于RTM版本中,而不是在RC2中。根据您想要做的事情,创建您自己的属性可能会有效。
https://stackoverflow.com/questions/37305985
复制相似问题