public void AddFieldMapping(string fieldName, FieldMappingFunc func) { PropertyInfo propertyInfo; if (propertyMappingCache.TryGetValue(fieldName, out propertyInfo)) { AddFieldMapping(propertyInfo, func); } }
private void AddFieldMapping(PropertyInfo propertyInfo, FieldMappingFunc func) { List <FieldMappingFunc> list; if (fieldMappingCache.TryGetValue(propertyInfo, out list) == false) { list = new List <FieldMappingFunc>(); fieldMappingCache[propertyInfo] = list; } list.Add(func); }
private void AddFieldMapping(PropertyInfo propertyInfo, string jqSelector, int?index, string attrName) { List <FieldMappingFunc> list; if (fieldMappingCache.TryGetValue(propertyInfo, out list) == false) { list = new List <FieldMappingFunc>(); fieldMappingCache[propertyInfo] = list; } FieldMappingFunc func = (nd, obj, pi) => { HtmlNode node = null; if (index != null) { var nds = nd.QuerySelectorAll(jqSelector); if (nds.Count > index.Value) { node = nds[index.Value]; } } else if (string.IsNullOrEmpty(jqSelector)) { node = nd; } else { node = nd.QuerySelector(jqSelector); } if (node != null) { try { if (string.IsNullOrEmpty(attrName) == false) { var attr = node.Attributes[attrName]; if (attr != null) { pi.SetValue(obj, To(attr.Value, pi.PropertyType)); return(true); } } else { pi.SetValue(obj, To(node.ToText().Trim(), pi.PropertyType)); return(true); } } catch (Exception) { } } return(false); }; list.Add(func); }
public void AddFieldMapping <TReturn>(Expression <Func <T, TReturn> > fieldExpression, FieldMappingFunc func) { var vistor = new FieldExpVistor(); vistor.Visit(fieldExpression); var fieldName = vistor.Field; AddFieldMapping(fieldName, func); }