Пример #1
0
        public ISortInputTypeDescriptor <T> Ignore(Expression <Func <T, object> > property)
        {
            if (property.ExtractMember() is PropertyInfo p)
            {
                Fields.GetOrAddDescriptor(p,
                                          () => IgnoredSortingFieldDescriptor.CreateOperation(p, Context));
                return(this);
            }

            throw new ArgumentException(
                      SortingResources.SortInputTypeDescriptor_Ignore_OnlyPopertiesAreAllowed,
                      nameof(property));
        }
        public ISortInputTypeDescriptor <T> Ignore(Expression <Func <T, object> > property)
        {
            if (property.ExtractMember() is PropertyInfo p)
            {
                Fields.GetOrAddDescriptor(p,
                                          () => IgnoredSortingFieldDescriptor.CreateOperation(p, Context));
                return(this);
            }

            // TODO : resources
            throw new ArgumentException(
                      "Only properties are allowed for input types.",
                      nameof(property));
        }
        public static IgnoredSortingFieldDescriptor CreateOperation(
            PropertyInfo property,
            IDescriptorContext context)
        {
            var operation     = new SortOperation(property);
            var typeReference = new ClrTypeReference(
                typeof(SortOperationKindType),
                TypeContext.Input);
            NameString name = context.Naming.GetMemberName(
                property, MemberKind.InputObjectField);

            return(IgnoredSortingFieldDescriptor.New(
                       context,
                       name,
                       typeReference,
                       operation
                       ));
        }
        public void GetOrAddDescriptor_Should_ReplaceDescriptorIfDifferentType()
        {
            //arrange
            IList <SortOperationDescriptorBase> list = new List <SortOperationDescriptorBase>();
            var descriptorToRemove =
                IgnoredSortingFieldDescriptor.CreateOperation(_propertyInfo, _descriptorContext);
            var descriptorToAdd =
                SortOperationDescriptor.CreateOperation(_propertyInfo, _descriptorContext);
            Func <SortOperationDescriptor> valueFactory = () => descriptorToAdd;

            list.Add(descriptorToRemove);

            //act
            SortOperationDescriptor result =
                list.GetOrAddDescriptor(_propertyInfo, valueFactory);

            //assert
            Assert.Single(list);
            Assert.Same(descriptorToAdd, list[0]);
            Assert.Same(descriptorToAdd, result);
            Assert.NotSame(descriptorToRemove, result);
        }