/// <summary> /// 获取枚举定义列表 /// </summary> /// <param name="type">类型</param> /// <returns>返回枚举列表元组(名称、值、显示名、描述)</returns> public static IEnumerable <(string Name, int Value, string DisplayName, string Description)> GetEnumDefinitionList(this Type type) { var list = new List <(string Name, int Value, string DisplayName, string Description)>(); var attrType = type; if (!attrType.IsEnum) { return(null); } var names = Enum.GetNames(attrType); var values = Enum.GetValues(attrType); var index = 0; foreach (var value in values) { var name = names[index]; var field = values.GetType().GetField(value.ToString()); var displayName = TypeReflections.GetDisplayName(field); var des = TypeReflections.GetDescription(field); (string Name, int Value, string DisplayName, string Description)item = new( name, Convert.ToInt32(value), displayName.IsNullOrWhiteSpace() ? null : displayName, des.IsNullOrWhiteSpace() ? null : des ); list.Add(item); index++; } return(list); }
public void ClassLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDisplayName(EntryOne); var desc2 = TypeReflections.GetDisplayName(EntryTwo); var desc3 = TypeReflections.GetDisplayName(EntryThree); var desc4 = TypeReflections.GetDisplayName(Wrapper); var desc5 = TypeReflections.GetDisplayName(Wrapper, ReflectionOptions.Inherit); desc1.ShouldBe("NormalClassDisplayNameOne"); desc2.ShouldBe("NormalClassDisplayNameTwo"); desc3.ShouldBe(EntryThree.Name); desc4.ShouldBe(Wrapper.Name); desc5.ShouldBe("NormalClassDisplayNameOne"); desc1 = TypeReflections.GetDisplayNameOr(EntryOne, "OrMe"); desc2 = TypeReflections.GetDisplayNameOr(EntryTwo, "OrMe"); desc3 = TypeReflections.GetDisplayNameOr(EntryThree, "OrMe"); desc4 = TypeReflections.GetDisplayNameOr(Wrapper, "OrMe"); desc5 = TypeReflections.GetDisplayNameOr(Wrapper, "OrMe", ReflectionOptions.Inherit); desc1.ShouldBe("NormalClassDisplayNameOne"); desc2.ShouldBe("NormalClassDisplayNameTwo"); desc3.ShouldBe("OrMe"); desc4.ShouldBe("OrMe"); desc5.ShouldBe("NormalClassDisplayNameOne"); }
public void PropertyLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDisplayName(PropertyOne); var desc2 = TypeReflections.GetDisplayName(PropertyTwo); var desc3 = TypeReflections.GetDisplayName(PropertyThree); desc1.ShouldBe("PropertyDisplayNameOne"); desc2.ShouldBe("PropertyDisplayNameTwo"); desc3.ShouldBe(PropertyThree.Name); desc1 = TypeReflections.GetDisplayNameOr(PropertyOne, "OrMe"); desc2 = TypeReflections.GetDisplayNameOr(PropertyTwo, "OrMe"); desc3 = TypeReflections.GetDisplayNameOr(PropertyThree, "OrMe"); desc1.ShouldBe("PropertyDisplayNameOne"); desc2.ShouldBe("PropertyDisplayNameTwo"); desc3.ShouldBe("OrMe"); }
public void ParameterLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDisplayName(ParameterOne); var desc2 = TypeReflections.GetDisplayName(ParameterTwo); var desc3 = TypeReflections.GetDisplayName(ParameterThree); desc1.ShouldBe("ParamName"); desc2.ShouldBe("ParamName"); desc3.ShouldBe(ParameterThree.Name); desc1 = TypeReflections.GetDisplayNameOr(ParameterOne, "OrMe"); desc2 = TypeReflections.GetDisplayNameOr(ParameterTwo, "OrMe"); desc3 = TypeReflections.GetDisplayNameOr(ParameterThree, "OrMe"); desc1.ShouldBe("ParamName"); desc2.ShouldBe("ParamName"); desc3.ShouldBe("OrMe"); }
public void MethodLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDisplayName(MethodOne); var desc2 = TypeReflections.GetDisplayName(MethodTwo); var desc3 = TypeReflections.GetDisplayName(MethodThree); desc1.ShouldBe("MethodDisplayNameOne"); desc2.ShouldBe("MethodDisplayNameTwo"); desc3.ShouldBe(MethodThree.Name); desc1 = TypeReflections.GetDisplayNameOr(MethodOne, "OrMe"); desc2 = TypeReflections.GetDisplayNameOr(MethodTwo, "OrMe"); desc3 = TypeReflections.GetDisplayNameOr(MethodThree, "OrMe"); desc1.ShouldBe("MethodDisplayNameOne"); desc2.ShouldBe("MethodDisplayNameTwo"); desc3.ShouldBe("OrMe"); }