Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用DescriptionAttribute实现带有空格的枚举名称?_C#_.net_Vb.net_Enums - Fatal编程技术网

C# 如何使用DescriptionAttribute实现带有空格的枚举名称?

C# 如何使用DescriptionAttribute实现带有空格的枚举名称?,c#,.net,vb.net,enums,C#,.net,Vb.net,Enums,如何使用descriptionatibute通过enums实现以下功能?请注意枚举值中的空格 public enum PersonGender { Unknown = 0, Male = 1, Female = 2, Intersex = 3, Indeterminate = 3, Non Stated = 9, Inadequately Described = 9 }

如何使用
descriptionatibute
通过
enums
实现以下功能?请注意枚举值中的空格

public enum PersonGender
    {
        Unknown = 0,
        Male = 1,
        Female = 2,
        Intersex = 3,
        Indeterminate = 3,
        Non Stated = 9,
        Inadequately Described = 9
    }

例如,您可以这样使用:

这是我们的枚举:

public enum MyEnum
{
   [Description("Description for Foo")]
   Foo,
   [Description("Description for Bar")]
   Bar
}
以及我们获取属性的方法

public static string GetDescription(this Enum value)
{
    Type type = value.GetType();
    string name = Enum.GetName(type, value);
    if (name != null)
    {
        FieldInfo field = type.GetField(name);
        if (field != null)
        {
             DescriptionAttribute attr =
                    Attribute.GetCustomAttribute(field,
                    typeof(DescriptionAttribute)) as DescriptionAttribute;
              if (attr != null)
              {
                   return attr.Description;
              }
        }
    }
    return null;
}
您可以获得以下描述:

  MyEnum x = MyEnum.Foo;
  string description = x.GetDescription();

我不明白为什么枚举描述属性如此复杂。难道没有一个内置的函数来访问它吗?我知道没有。