1.用Enum定义一个类型
namespace MultipleLanguage.Models { public enum CustomErrorCode { [Description("My Invalid Name")] InvalidName = 1001, [Description("My Invalid URL")] InvalidURL = 1002, [Description("My Invalid Credential")] InvalidCredential = 1003 //[LocalizedDescription("EmailInvalid", ResourceType =typeof(Resource))] //InvalidCredential = 1003 // [LocalizedDescription("EmailInvalid", ResourceType = typeof(Resource))] // [LocalizedEnum("EmailInvalid", NameResourceType = typeof(Resource))] } }
2.在API那边return InvalidName的描述值
return CustomErrorCode.InvalidName.ToString();
如果这么写,返回的是:
要显示 Description的值,法一写法可以如下:
//法一: var enumType = typeof(CustomErrorCode); var memberInfos = enumType.GetMember(CustomErrorCode.InvalidName.ToString()); var enumValueMemberInfo = memberInfos.FirstOrDefault(m => m.DeclaringType == enumType); var valueAttributes = enumValueMemberInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); var description = ((DescriptionAttribute)valueAttributes[0]).Description; return description;
返回的便是Description的值:
法二,先写一个扩展的静态方法:
public static class EnumExtender { public static string GetLocalizedDescription(this Enum @enum) { if (@enum == null) return null; string description = @enum.ToString(); FieldInfo fieldInfo = @enum.GetType().GetField(description); DescriptionAttribute[] attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); if (attributes.Any()) return attributes[0].Description; return description; } }
再调用上面那个方法:
//法二: CustomErrorCode code = CustomErrorCode.InvalidName; return code.GetLocalizedDescription();
返回值如下:
现在进真正的问题,如果对这个Description Attribute进行多语言设置?下篇再写
API 多语言显示Description Attribute的值(上:只是显示Description的值)
原文:https://www.cnblogs.com/keeplearningandsharing/p/14647061.html