public PropertyMapper(Expression <Func <TModel, TProperty> > expression) { var member = expression.Body as MemberExpression; if (member == null) { throw new InvalidOperationException("无效的属性访问表达式" + expression); } _member = ((MemberExpression)expression.Body).Member; _valueReader = CellValueReader.Build <TProperty>(); _displayName = ExtraceDisplayName(_member); _propertyMap = CreatePropertyMapAction(expression); }
/// <summary> /// Sets the reader of the property map to use a custom cell value reader. /// </summary> /// <typeparam name="T">The type of the property map.</typeparam> /// <param name="propertyMap">The property map to use.</param> /// <param name="reader">The custom reader to use.</param> /// <returns>The property map on which this method was invoked.</returns> public static T WithReader <T>(this T propertyMap, ICellValueReader reader) where T : ISinglePropertyMap { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (propertyMap.CellReader is OptionalCellValueReader optionalCellValueReader) { optionalCellValueReader.InnerReader = reader; } else { propertyMap.CellReader = reader; } return(propertyMap); }