如何获得enum成员的属性值?

wxtp 2007-11-25 11:57:04
现在定义了一个名为People的枚举类型

[System.SerializableAttribute()]
public enum People {

/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("Sam")]
Item0,

/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("John")]
Item1,

/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("Jimmy")]
Item2,

}

现在想通过一个函数

string GetAttribue(Type type, string itemname)

实现获取People枚举类型的属性值,就是GetAttribue(typeof(People), "Item0")返回"Sam",GetAttribue(typeof(People), "Item1")返回"John",GetAttribue(typeof(People), "Item2")返回"Jimmy"
那么GetAttribute该如何实现?
...全文
284 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
khler 2007-11-25
  • 打赏
  • 举报
回复
顶一下
王集鹄 2007-11-25
  • 打赏
  • 举报
回复
参考如下代码
using System.Reflection;

[System.SerializableAttribute()]
public enum People
{
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("Sam")]
Item0,

/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("John")]
Item1,

/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("Jimmy")]
Item2,

}

private void button1_Click(object sender, EventArgs e)
{
Text = GetAttribue(typeof(People), "Item0");
}

public static string GetAttribue(Type type, string itemname)
{
FieldInfo vFieldInfo = type.GetField(itemname);
Attribute vAttribute = Attribute.GetCustomAttribute(
vFieldInfo, typeof(System.Xml.Serialization.XmlEnumAttribute));
if (vAttribute != null)
return ((System.Xml.Serialization.XmlEnumAttribute)vAttribute).Name;
else return itemname;
}

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧