public void ClassLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDescription(EntryOne); var desc2 = TypeReflections.GetDescription(EntryTwo); var desc3 = TypeReflections.GetDescription(EntryThree); var desc4 = TypeReflections.GetDescription(Wrapper); var desc5 = TypeReflections.GetDescription(Wrapper, ReflectionOptions.Inherit); desc1.ShouldBe("NormalClassOne"); #if NETFRAMEWORK desc2.ShouldBe(EntryTwo.Name); #else desc2.ShouldBe("NormalClassDisplayTwo"); #endif desc3.ShouldBe("NormalClassThree"); desc4.ShouldBe(Wrapper.Name); desc5.ShouldBe("NormalClassOne"); desc1 = TypeReflections.GetDescriptionOr(EntryOne, "OrMe"); desc2 = TypeReflections.GetDescriptionOr(EntryTwo, "OrMe"); desc3 = TypeReflections.GetDescriptionOr(EntryThree, "OrMe"); desc4 = TypeReflections.GetDescriptionOr(Wrapper, "OrMe"); desc5 = TypeReflections.GetDescriptionOr(Wrapper, "OrMe", ReflectionOptions.Inherit); desc1.ShouldBe("NormalClassOne"); #if NETFRAMEWORK desc2.ShouldBe("OrMe"); #else desc2.ShouldBe("NormalClassDisplayTwo"); #endif desc3.ShouldBe("NormalClassThree"); desc4.ShouldBe("OrMe"); desc5.ShouldBe("NormalClassOne"); }
/// <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 PropertyLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDescription(PropertyOne); var desc2 = TypeReflections.GetDescription(PropertyTwo); var desc3 = TypeReflections.GetDescription(PropertyThree); desc1.ShouldBe("PropertyOne"); desc2.ShouldBe("PropertyDisplayTwo"); desc3.ShouldBe("PropertyThree"); desc1 = TypeReflections.GetDescriptionOr(PropertyOne, "OrMe"); desc2 = TypeReflections.GetDescriptionOr(PropertyTwo, "OrMe"); desc3 = TypeReflections.GetDescriptionOr(PropertyThree, "OrMe"); desc1.ShouldBe("PropertyOne"); desc2.ShouldBe("PropertyDisplayTwo"); desc3.ShouldBe("PropertyThree"); }
public void ParameterLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDescription(ParameterOne); var desc2 = TypeReflections.GetDescription(ParameterTwo); var desc3 = TypeReflections.GetDescription(ParameterThree); desc1.ShouldBe("ArgOne"); desc2.ShouldBe("ParamDesc"); desc3.ShouldBe("ArgThree"); desc1 = TypeReflections.GetDescriptionOr(ParameterOne, "OrMe"); desc2 = TypeReflections.GetDescriptionOr(ParameterTwo, "OrMe"); desc3 = TypeReflections.GetDescriptionOr(ParameterThree, "OrMe"); desc1.ShouldBe("ArgOne"); desc2.ShouldBe("ParamDesc"); desc3.ShouldBe("ArgThree"); }
public void MethodLevelDescriptionGettingTest() { var desc1 = TypeReflections.GetDescription(MethodOne); var desc2 = TypeReflections.GetDescription(MethodTwo); var desc3 = TypeReflections.GetDescription(MethodThree); desc1.ShouldBe("MethodOne"); desc2.ShouldBe("MethodDisplayTwo"); desc3.ShouldBe("MethodThree"); desc1 = TypeReflections.GetDescriptionOr(MethodOne, "OrMe"); desc2 = TypeReflections.GetDescriptionOr(MethodTwo, "OrMe"); desc3 = TypeReflections.GetDescriptionOr(MethodThree, "OrMe"); desc1.ShouldBe("MethodOne"); desc2.ShouldBe("MethodDisplayTwo"); desc3.ShouldBe("MethodThree"); }
/// <summary> /// Get description via <see cref="System.ComponentModel.DescriptionAttribute"/> <br /> /// 获取描述,使用 <see cref="System.ComponentModel.DescriptionAttribute"/> 特性设置描述 /// </summary> /// <param name="enumType"></param> /// <param name="member"></param> /// <returns></returns> public static string DescriptionOf(Type enumType, object member) { return(TypeReflections.GetDescription(enumType, NameOf(enumType, member))); }
/// <summary> /// Get description via <see cref="System.ComponentModel.DescriptionAttribute"/> <br /> /// 获取描述,使用 <see cref="System.ComponentModel.DescriptionAttribute"/> 特性设置描述 /// </summary> /// <param name="member"></param> /// <typeparam name="TEnum"></typeparam> /// <returns></returns> public static string DescriptionOf <TEnum>(TEnum member) where TEnum : struct, Enum { return(TypeReflections.GetDescription <TEnum>(NameOf(member))); }