using System; using System.Collections.Generic; namespace Mapster { public static class MapsterExtension { public static IEnumerable<TDestination> Adapt<TDestination>(this IEnumerable<object> sourceList) { foreach (var item in sourceList) yield return item.Adapt<TDestination>(); } public static TDestination Adapt<TDestination>(this object source, Action<TDestination> afterMapAction = default) { var dest = source.Adapt<TDestination>(); if (afterMapAction != default) afterMapAction(dest); return dest; } public static TDestination Adapt<TDestination, TSource>(this TSource source, Action<TDestination, TSource> afterMapAction = default) { var dest = source.Adapt<TDestination>(); if (afterMapAction != default) afterMapAction(dest, source); return dest; } public static IEnumerable<TDestination> Adapt<TDestination, TSource>(this IEnumerable<TSource> sourceList, Action<TDestination, TSource> eachAfterMapAction = default) { foreach (var item in sourceList) { var dest = item.Adapt<TDestination>(); if (eachAfterMapAction != default) eachAfterMapAction(dest, item); yield return dest; } } } }