public void ReflectionBooleanTest() { 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.BooleanV1)); var m2 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.BooleanV2)); var m3 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.BooleanV3)); var m4 = allMembers.Single(x => x.Name == nameof(NormalValueTypeClass.BooleanV4)); 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.IsBoolean(m0).ShouldBeFalse(); TypeReflections.IsBoolean(m1).ShouldBeTrue(); TypeReflections.IsBoolean(m2).ShouldBeTrue(); TypeReflections.IsBoolean(m3).ShouldBeFalse(); TypeReflections.IsBoolean(m4).ShouldBeFalse(); TypeReflections.IsBoolean(m3, TypeIsOptions.IgnoreNullable).ShouldBeTrue(); TypeReflections.IsBoolean(m4, TypeIsOptions.IgnoreNullable).ShouldBeTrue(); TypeReflections.IsBoolean(m5).ShouldBeFalse(); }