/// <summary> /// 将指定的源映射到目标。 /// </summary> /// <typeparam name="TSource">源类型</typeparam> /// <typeparam name="TDest">目标类型</typeparam> /// <param name="source">源对象</param> /// <param name="target">目标对象</param> /// <param name="name">别名</param> public static void Map <TSource, TDest>(this TSource source, TDest target, string name = null) where TSource : class where TDest : class { if (!_initialized) { Initialize(); } TDest result = null; MapperConfiguration <TSource, TDest> mapper = GetMapper <TSource, TDest>(name); Action <TSource, TDest> query = mapper.GetDelegateForExistingTarget() as Action <TSource, TDest>; if (query != null) { query(source, target); // 映射后执行的操作 mapper.ExecuteAfterActions(source, result); } }
/// <summary> /// Maps the specified source to the target. /// </summary> /// <typeparam name="TSource">The type of the source.</typeparam> /// <typeparam name="TTarget">The type of the target.</typeparam> /// <param name="source">The source.</param> /// <param name="target">The target.</param> /// <param name="name">The name.</param> public static void Map <TSource, TTarget>(TSource source, TTarget target, string name = null) where TSource : class where TTarget : class { Contract.Requires(source != null); Contract.Requires(target != null); TTarget result = null; try { MapperConfiguration <TSource, TTarget> mapper = GetMapper <TSource, TTarget>(name); Action <TSource, TTarget> query = mapper.GetDelegateForExistingTarget() as Action <TSource, TTarget>; if (query != null) { query(source, target); // Action performed after the mapping mapper.ExecuteAfterActions(source, result); } } catch (Exception) { throw; } }