using Mapster;
/// <summary>
/// 对象映射
/// </summary>
public static class MapperExtension
{
    /// <summary>
    /// 对象属性映射
    /// </summary>
    /// <typeparam name="TSource">原类型</typeparam>
    /// <typeparam name="TResult">转换后的类型</typeparam>
    /// <param name="data">当前类型数据</param>
    /// <returns></returns>
    public static TResult Mapper<TSource, TResult>(this TSource data) where TSource : class
    {
        return data.Adapt<TResult>();
    }

    /// <summary>
    /// 对象属性映射
    /// </summary>
    /// <typeparam name="TSource">原类型</typeparam>
    /// <typeparam name="TResult">转换后的类型</typeparam>
    /// <param name="data">当前类型数据</param>
    /// <param name="config">配置信息</param>
    /// <returns></returns>
    public static TResult Mapper<TSource, TResult>(this TSource data, TypeAdapterConfig config) where TSource : class
    {
        return data.Adapt<TResult>(config);
    }

    /// <summary>
    /// 对象集合属性映射
    /// </summary>
    /// <typeparam name="TSource">原类型</typeparam>
    /// <typeparam name="TResult">转换后的类型</typeparam>
    /// <param name="data">当前类型数据</param>
    /// <returns></returns>
    public static IEnumerable<TResult> MapperList<TSource, TResult>(this IEnumerable<TSource> data) where TSource : class
    {
        return data.Adapt<IList<TResult>>();
    }
}