1. /// <summary>
    2. /// 将源对象中和目标对象中字段名一样的字段的值赋值给目标对象的字段
    3. /// </summary>
    4. /// <typeparam name="TSource"></typeparam>
    5. /// <typeparam name="TTarget"></typeparam>
    6. /// <param name="source"></param>
    7. /// <param name="target"></param>
    8. /// <returns></returns>
    9. public static TTarget MapColumns<TSource, TTarget>(TSource source, TTarget target)
    10. where TSource : class, new()
    11. where TTarget : class, new()
    12. {
    13. if (source == null || target == null)
    14. {
    15. return default;
    16. }
    17. var sourceType = typeof(TSource);
    18. var targetType = typeof(TTarget);
    19. var targetTypeProps = targetType.GetProperties();
    20. PropertyInfo cur = default;
    21. foreach (var item in sourceType.GetProperties())
    22. {
    23. cur = targetTypeProps.FirstOrDefault(a => a.Name == item.Name);
    24. if (cur == null) { continue; }
    25. cur.SetValue(target, cur.GetValue(source));
    26. }
    27. return target;
    28. }