MapperHelper.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.Linq.Expressions;
  3. namespace Masuit.Tools.Mapping.Helper
  4. {
  5. /// <summary>
  6. /// mapper帮助类
  7. /// </summary>
  8. internal static class MapperHelper
  9. {
  10. /// <summary>
  11. /// 获取类型的默认值。
  12. /// </summary>
  13. /// <param name="typeObject">对象类型</param>
  14. internal static object GetDefaultValue(Type typeObject)
  15. {
  16. object defaultValue = null;
  17. // 对于值类型(例如Integer),必须将对象实例化为具有其默认值。
  18. if (typeObject.BaseType == typeof(ValueType))
  19. {
  20. NewExpression exp = Expression.New(typeObject);
  21. LambdaExpression lambda = Expression.Lambda(exp);
  22. Delegate constructor = lambda.Compile();
  23. defaultValue = constructor.DynamicInvoke();
  24. }
  25. if (typeObject.IsEnum)
  26. {
  27. defaultValue = Enum.Parse(typeObject, Enum.GetNames(typeObject)[0]);
  28. }
  29. return defaultValue;
  30. }
  31. }
  32. }