ByteTransformHelper.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace TFT_MelsecMcNet
  5. {
  6. /// <summary>
  7. /// 所有数据转换类的静态辅助方法
  8. /// Static helper method for all data conversion classes
  9. /// </summary>
  10. public static class ByteTransformHelper
  11. {
  12. /// <summary>
  13. /// 结果转换操作的基础方法,需要支持类型,及转换的委托
  14. /// </summary>
  15. /// <typeparam name="TResult">结果类型</typeparam>
  16. /// <param name="result">源</param>
  17. /// <param name="translator">实际转换的委托</param>
  18. /// <returns>转换结果</returns>
  19. public static OperateResult<TResult> GetResultFromBytes<TResult>(OperateResult<byte[]> result, Func<byte[], TResult> translator)
  20. {
  21. try
  22. {
  23. if (result.IsSuccess)
  24. {
  25. return OperateResult.CreateSuccessResult(translator(result.Content));
  26. }
  27. else
  28. {
  29. return OperateResult.CreateFailedResult<TResult>(result);
  30. }
  31. }
  32. catch (Exception ex)
  33. {
  34. return new OperateResult<TResult>() { Message = StringResources.Language.DataTransformError + SoftBasic.ByteToHexString(result.Content) + $" : Length({result.Content.Length}) " + ex.Message };
  35. }
  36. }
  37. /// <summary>
  38. /// 结果转换操作的基础方法,需要支持类型,及转换的委托
  39. /// </summary>
  40. /// <typeparam name="TResult">结果类型</typeparam>
  41. /// <param name="result">源结果</param>
  42. /// <returns>转换结果</returns>
  43. public static OperateResult<TResult> GetResultFromArray<TResult>(OperateResult<TResult[]> result)
  44. {
  45. if (!result.IsSuccess) return OperateResult.CreateFailedResult<TResult>(result);
  46. return OperateResult.CreateSuccessResult(result.Content[0]);
  47. }
  48. }
  49. }