private void AddToMapper(MapperPropertyConfig <TModel> config) { if (_mapDict.ContainsKey(config.ColumnName)) { throw new Exception("Property mapping already exists"); } _mapDict.Add(config.ColumnName, config); }
/// <summary> /// Adds property mapping info /// </summary> /// <typeparam name="TProperty">Type of property, also column</typeparam> /// <param name="propertySelector">Target property selector</param> /// <param name="columnName">Column name</param> /// <returns>Itself</returns> public MapperConfig <TModel> MapProperty <TProperty>(Expression <Func <TModel, TProperty> > propertySelector, string columnName) { var setter = propertySelector.BuildSetter(); var getter = propertySelector.BuildGetter(); var mapConfig = new MapperPropertyConfig <TModel, TProperty>(columnName, setter, getter); AddToMapper(mapConfig); return(this); }
/// <summary> /// Adds property mapping info with different types /// </summary> /// <typeparam name="TProperty">Type of property</typeparam> /// <typeparam name="TColumn">Type of column</typeparam> /// <param name="propertySelector">Target property selector</param> /// <param name="columnName">Column name</param> /// <param name="mapperToColumn">Mapper from property to column</param> /// <param name="mapperToProperty">Mapper from column to property</param> /// <returns>Itself</returns> public MapperConfig <TModel> MapProperty <TProperty, TColumn>(Expression <Func <TModel, TProperty> > propertySelector, string columnName, Func <TProperty, TColumn> mapperToColumn, Func <TColumn, TProperty> mapperToProperty) { Expression <Func <TProperty, TColumn> > mapperToColumnExp = x => mapperToColumn(x); Expression <Func <TColumn, TProperty> > mapperToPropertyExp = x => mapperToProperty(x); var setter = propertySelector.BuildSetter(mapperToPropertyExp); var getter = propertySelector.BuildGetter(mapperToColumnExp); var mapConfig = new MapperPropertyConfig <TModel, TColumn>(columnName, setter, getter); AddToMapper(mapConfig); return(this); }