예제 #1
0
        /// <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");
        }