欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#如何获取枚举的描述属性详解

程序员文章站 2023-12-11 08:50:22
前言 枚举为我看日常开发的可读性提供的非常好的支持,但是有时在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述。通过反射,我们能获取到枚举类型的描述属...

前言

枚举为我看日常开发的可读性提供的非常好的支持,但是有时在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述。通过反射,我们能获取到枚举类型的描述属性。

首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[description]就是描述属性,使用这个属性,我们需要添加 using system.componentmodel 引用。

public enum enumsex
{
  /// <summary>
  /// 男
  /// </summary>
  [description("男")]
  male = 0,
  /// <summary>
  /// 女
  /// </summary>
  [description("女")]
  female = 1
}

接着我们需要写一个获取描述属性的方法,fieldinfo需要添加 using system.reflection 引用,descriptionattribute需要添加 using system.componentmodel 引用。

public string getenumdescription(enum enumvalue)
{
  string value = enumvalue.tostring();
  fieldinfo field = enumvalue.gettype().getfield(value);
  object[] objs = field.getcustomattributes(typeof(descriptionattribute), false);  //获取描述属性
  if (objs == null || objs.length == 0)  //当描述属性没有时,直接返回名称
    return value;
  descriptionattribute descriptionattribute = (descriptionattribute)objs[0];
  return descriptionattribute.description;
}

好了,现在我们可以获取到枚举的描述了。

string sex = getenumdescription(enumsex.female); //sex = "女"

同理,我们可以给枚举类型赋上其他类型的属性,比如obsolete,在getenumdescription方法里面将descriptionattribute换成obsoleteattribute,一样可以取到属性。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。