public StructureMapItem <TSource, TDestination, TResult> MapIdProperty <TResult>(Expression <Func <TSource, TResult> > sourceExpression, Expression <Func <TDestination, TResult> > destinationExpression = null) { destinationExpression = destinationExpression ?? sourceExpression as Expression <Func <TDestination, TResult> >; StructureMapItem <TSource, TDestination, TResult> idMapping = new StructureMapItem <TSource, TDestination, TResult>(sourceExpression, destinationExpression); idStructureMap = idMapping; return(idMapping); }
private static Expression GetIdEvaluatorFromMapper <TSource, TDestination>(IStructureMap mapper) where TSource : class { IStructureMapItem <TSource, TDestination> idProperty = (mapper as StructureMap <TSource, TDestination>).GetIdPropertyItem(); MethodInfo methodInfo = ExpressionHelper.MakeGenericMethod(() => GetIdEvaluatorFromMappingItem <string, string, string>(null), typeof(TSource), mapper.DestinationType, idProperty.ResultType); return(methodInfo.Invoke(null, new object[] { idProperty }) as Expression); }
public void Unmap <TResult>(Expression <Func <TSource, TResult> > sourceExpression) { string propertyName = ExpressionHelper.GetPropertyName(sourceExpression.Body); if (idStructureMap != null && idStructureMap.SourceName == propertyName) { idStructureMap = null; } var structureMap = structureMapList.FirstOrDefault(m => m.SourceName == propertyName); if (structureMap != null) { structureMapList.Remove(structureMap); } }
private static Expression GetIdEvaluatorFromMappingItem <TSource, TDestination, TResult>( IStructureMapItem <TSource, TDestination> mappingItem) { return(Expression.Constant((mappingItem as StructureMapItem <TSource, TDestination, TResult>).PropertyGetter)); }