作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有枚举:
public enum Operation {
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("01")]
Item01,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("02")]
Item02,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("03")]
Item03,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("04")]
Item04,
}
如何获取 XmlEnumAttribute 值?
我正在尝试:
var res = Operation.Item1;
var result = (res.GetType().GetField("Item01").GetCustomAttributes(typeof(XmlEnumAttribute), true)[0] as XmlEnumAttribute).Name;
可能存在更好的方法?
最佳答案
您可以使用此扩展方法创建一个辅助(静态)类
public static string GetXmlEnumAttributeValueFromEnum<TEnum>(this TEnum value) where TEnum : struct, IConvertible
{
var enumType = typeof(TEnum);
if (!enumType.IsEnum) return null;//or string.Empty, or throw exception
var member = enumType.GetMember(value.ToString()).FirstOrDefault();
if (member == null) return null;//or string.Empty, or throw exception
var attribute = member.GetCustomAttributes(false).OfType<XmlEnumAttribute>().FirstOrDefault();
if (attribute == null) return null;//or string.Empty, or throw exception
return attribute.Name;
}
用法
var res = Operation.Item1;
var result = res.GetXmlAttributeValueFromEnum();
关于c# - 从枚举中获取 XmlEnumAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737950/
我有枚举: public enum Operation { /// [System.Xml.Serialization.XmlEnumAttribute("01")] Ite
我有一个枚举试图将字符串解析为枚举值,这适用于许多情况,但我开始获取 SOAP 值,这些值试图解析我的枚举之一的相同类型,但字符串的大小写是不同的,所以我做了一个像这样的快速解决方案: public
我需要一个通用函数来根据枚举的 XmlEnumAttribute“名称”属性检索枚举的名称或值。例如,我定义了以下枚举: Public Enum Currency CDN = 1 US
我通常不必问问题,因为大多数时候我会在互联网上找到我需要的东西,但现在我还没有找到获得这个的方法: 假设我在这个枚举中有大约 50000 个枚举元素: public enum myEnum {
我有一个包含以下序列的 XSD 文件: 我使用 XSD 工具从中生成 C# 代码。序列被翻译成 [System.CodeDom.Compiler.Genera
我是一名优秀的程序员,十分优秀!