示例#1
0
        private PropertyExtractor GetAttributeExtractCombo(Type type, PropertyInfo property)
        {
            PropertyExtractor propertyExtractor = null;
            var comboExtract = AttributeUtil.GetAttribute <ComboExtractAttribute>(property);

            if (comboExtract != null)
            {
                var       extractBys = comboExtract.Value;
                var       selectors  = ExtractorUtils.GetSelectors(extractBys);
                ISelector selector   = new AndSelector(selectors);
                switch (comboExtract.Op)
                {
                case Op.And:
                    selector = new AndSelector(selectors);
                    break;

                case Op.Or:
                    selector = new OrSelector(selectors);
                    break;
                }
                var source = comboExtract.Source == ExtractSource.RawHtml ? Source.RawHtml : Source.Html;
                propertyExtractor = new PropertyExtractor(property, selector, source,
                                                          comboExtract.NotNull, comboExtract.IsMulti ||
                                                          typeof(List <object>).IsAssignableFrom(property.GetType()));
            }
            return(propertyExtractor);
        }
示例#2
0
        private FieldExtractor GetAttributeExtractCombo(Type type, FieldInfo field)
        {
            FieldExtractor fieldExtractor = null;
            var            comboExtract   = AttributeUtil.GetAttribute <ComboExtractAttribute>(field);

            if (comboExtract != null)
            {
                var       extractBys = comboExtract.Value;
                var       selectors  = ExtractorUtils.GetSelectors(extractBys);
                ISelector selector   = new AndSelector(selectors);
                switch (comboExtract.Op)
                {
                case Op.And:
                    selector = new AndSelector(selectors);
                    break;

                case Op.Or:
                    selector = new OrSelector(selectors);
                    break;
                }
                var source = comboExtract.Source == ExtractSource.RawHtml ? Source.RawHtml : Source.Html;
                fieldExtractor = new FieldExtractor(field, selector, source,
                                                    comboExtract.NotNull, comboExtract.IsMulti ||
                                                    typeof(List <object>).IsAssignableFrom(field.GetType()))
                {
                    SetterMethod = GetSetterMethod(type, field) ?? null
                };
            }
            return(fieldExtractor);
        }
示例#3
0
        private FieldExtractor GetAnnotationExtractCombo(PropertyInfo field)
        {
            FieldExtractor fieldExtractor = null;
            ComboExtract   comboExtract   = field.GetCustomAttribute <ComboExtract>();

            if (comboExtract != null)
            {
                ExtractBy[] extractBies = comboExtract.Value;
                ISelector   selector;
                switch (comboExtract.Op)
                {
                case ComboExtract.ExtractOp.And:
                    selector = new AndSelector(ExtractorUtils.GetSelectors(extractBies));
                    break;

                case ComboExtract.ExtractOp.Or:
                    selector = new OrSelector(ExtractorUtils.GetSelectors(extractBies));
                    break;

                default:
                    selector = new AndSelector(ExtractorUtils.GetSelectors(extractBies));
                    break;
                }
                fieldExtractor = new FieldExtractor(field, selector, comboExtract.Source,
                                                    comboExtract.NotNull, comboExtract.Multi || field.PropertyType.IsGenericType, null);
            }

            return(fieldExtractor);
        }