public static EnumMetadataAttribute GetMetadata(object stringEnum, Type type) { if (type.GetCustomAttribute(typeof(StringEnumAttribute)) == null) { return(null); } int index = Array.IndexOf(Enum.GetValues(type), stringEnum); var fields = type.GetFields().Where(x => x.IsStatic).ToArray(); FieldInfo field = fields[index]; EnumMetadataAttribute metadata = (EnumMetadataAttribute)field.GetCustomAttribute(typeof(EnumMetadataAttribute)); return(metadata); }
public static EnumMetadataAttribute GetMetadata <T>(T stringEnum) where T : Enum { Type type = typeof(T); if (type.GetCustomAttribute(typeof(StringEnumAttribute)) == null) { return(null); } FieldInfo field = type.GetFields().Where(x => x.IsStatic).ToArray()[Array.IndexOf(Enum.GetValues(type), stringEnum)]; EnumMetadataAttribute metadata = (EnumMetadataAttribute)field.GetCustomAttribute(typeof(EnumMetadataAttribute)); return(metadata); }
public static object GetEnumValueFromString(string str, Type type) { foreach (FieldInfo fieldInfo in type.GetFields()) { if (!fieldInfo.IsStatic) { continue; } EnumMetadataAttribute metadata = fieldInfo.GetCustomAttribute(typeof(EnumMetadataAttribute)) as EnumMetadataAttribute; if (metadata == null) { continue; } if (metadata.Identifier == str) { return(fieldInfo.GetValue(null)); } } return(null); }
public static T?GetValueFromString <T>(string str) where T : struct, Enum { foreach (FieldInfo fieldInfo in typeof(T).GetFields()) { if (!fieldInfo.IsStatic) { continue; } EnumMetadataAttribute metadata = fieldInfo.GetCustomAttribute(typeof(EnumMetadataAttribute)) as EnumMetadataAttribute; if (metadata == null) { continue; } if (metadata.Identifier == str) { return((T?)fieldInfo.GetValue(null)); } } return(null); }