public int Execute(CalculatorOperations operation, CalculatorArguments args)
 {
     switch (operation)
     {
         case CalculatorOperations.Add:
             return Add(args);
         case CalculatorOperations.Sub:
             return Sub(args);
         case CalculatorOperations.Mul:
             return Mul(args);
         case CalculatorOperations.Div:
             return Div(args);
         default:
             throw new InvalidOperationException();
     }
 }
 public int Div(CalculatorArguments args)
 {
     return args.X / args.Y;
 }
 public int Sub(CalculatorArguments args)
 {
     return args.X - args.Y;
 }
 public int Mul(CalculatorArguments args)
 {
     return args.X * args.Y;
 }
 public int Add(CalculatorArguments args)
 {
     return args.X + args.Y;
 }