Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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));
 }