SqrtY, Factorial, CubeRoot, Square, Cube, PowY, Log, Ln, Exp, Inv, Pi, Sinh, Sin, Cosh, Cos, Tanh, Tan
38 lines
No EOL
927 B
C#
38 lines
No EOL
927 B
C#
using calculator.Common;
|
|
using calculator.Model;
|
|
using calculator.Services;
|
|
|
|
namespace calculator.Commands;
|
|
|
|
public class CalculateCommand : ICommand
|
|
{
|
|
private readonly ICaculator _caculator;
|
|
private readonly CaculatorData _data;
|
|
private readonly double? _b;
|
|
private readonly Operation _operation;
|
|
private double? _previousValue;
|
|
|
|
public CalculateCommand(ICaculator caculator, CaculatorData data)
|
|
{
|
|
_caculator = caculator;
|
|
_data = data;
|
|
_operation = data.Operation.Value;
|
|
|
|
if (double.TryParse(data.Input, out var b))
|
|
_b = b;
|
|
}
|
|
|
|
public void Execute()
|
|
{
|
|
if (_data.Value is null)
|
|
return;
|
|
_previousValue = _data.Value;
|
|
_data.Value = _caculator.Calculate(_operation, _data.Value.Value, _b);
|
|
_data.Input = null;
|
|
}
|
|
|
|
public void Undo()
|
|
{
|
|
_data.Value = _previousValue;
|
|
}
|
|
} |