示例#1
0
        public void ReflectionNumericTest()
        {
            Func <MemberInfo, bool> filter = member => member.MemberType == MemberTypes.TypeInfo ||
                                             member.MemberType == MemberTypes.Field ||
                                             member.MemberType == MemberTypes.Property;
            var t          = typeof(NormalValueTypeClass);
            var m0         = (MemberInfo)t;
            var allMembers = t.GetMembers().Where(filter).ToList();

            allMembers.ShouldNotBeNull();
            allMembers.ShouldNotBeEmpty();
            var m1 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.Int16V1));
            var m2 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.Int16V2));
            var m3 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.Int16V3));
            var m4 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.Int16V4));
            var m5 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.Str));

            m1.MemberType.ShouldBe(MemberTypes.Property);
            m2.MemberType.ShouldBe(MemberTypes.Field);
            m3.MemberType.ShouldBe(MemberTypes.Property);
            m4.MemberType.ShouldBe(MemberTypes.Field);
            m5.MemberType.ShouldBe(MemberTypes.Property);

            TypeReflections.IsNumeric(m0).ShouldBeFalse();
            TypeReflections.IsNumeric(m1).ShouldBeTrue();
            TypeReflections.IsNumeric(m2).ShouldBeTrue();
            TypeReflections.IsNumeric(m3).ShouldBeFalse();
            TypeReflections.IsNumeric(m4).ShouldBeFalse();
            TypeReflections.IsNumeric(m3, TypeIsOptions.IgnoreNullable).ShouldBeTrue();
            TypeReflections.IsNumeric(m4, TypeIsOptions.IgnoreNullable).ShouldBeTrue();
            TypeReflections.IsNumeric(m5).ShouldBeFalse();
        }