DoubleCalculator.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.Linq;
  4. using System.Net.Http.Headers;
  5. namespace InABox.Avalonia.Converters;
  6. public class DoubleCalculatorFunction : AbstractCalculatorFunction<double, NumericCalculatorType>
  7. {
  8. protected override double Calculate(double current, double next, NumericCalculatorType type)
  9. {
  10. var result = type switch
  11. {
  12. NumericCalculatorType.Sum => current + next,
  13. NumericCalculatorType.Product => current * next,
  14. NumericCalculatorType.Subtraction => current - next,
  15. NumericCalculatorType.Maximum => current > next ? current : next,
  16. NumericCalculatorType.Minimum => current < next ? current : next,
  17. _ => current
  18. };
  19. return result;
  20. }
  21. }
  22. public class DoubleArrayConverter : AbstractNumericArrayConverter<double>
  23. {
  24. protected override double[] Convert(IEnumerable<string> values)
  25. {
  26. var result = values.Select(double.Parse).ToArray();
  27. return result;
  28. }
  29. }
  30. public class DoubleCalculator : AbstractNumericCalculator<double, DoubleCalculatorFunction>
  31. {
  32. [TypeConverter(typeof(DoubleArrayConverter))]
  33. public override double[] Constants { get; set; }
  34. }