Как добраться до нужного метода? C#

Я начинаю осваивать ООП и у меня есть задание на калькулятор, получаем на вход список чисел и операций, затем выполняем. Операции нужно добавить перегрузкой через override и я вот вроде бы написал идею самих классов, а теперь не могу даже вызвать метод, подскажите как это сделать, вот код:

using System;
using System.Collections.Generic;

namespace Calculator
{
    public class Calculator
    {
        public List<int> Numbers = new List<int> { 1, 2, 3 };
        public List<string> Opereations = new List<string> { "+", "-", "*", "/" };

        public abstract class Calculations
        {
            public abstract int Calculate(List<int> numbers, List<string> operations);
        }
        public class Plus : Calculations
        {
            public override int Calculate(List<int> numbers, List<string> operations)
            {
                return numbers[0] + numbers[1];
            }
        }

        public class Minus : Calculations
        {
            public override int Calculate(List<int> numbers, List<string> operations)
            {
                return numbers[0] - numbers[1];
            }
        }

        public class Multiply : Calculations
        {
            public override int Calculate(List<int> numbers, List<string> operations)
            {
                return numbers[0] * numbers[1];
            }
        }

        public class Devide : Calculations
        {
            public override int Calculate(List<int> numbers, List<string> operations)
            {
                return numbers[0] / numbers[1];
            }
        }
    }

    public class Program
    {
        
        static void Main(string[] args)
        {
            
        }
    }
}

Ответы (1 шт):

Автор решения: aepot

Вы не должны использовать вложенные классы, это вас и путает. Разместите все классы рядом друг с другом, а не внутри. Станет легче.

Простой пример.

public abstract class Calculation
{
    public abstract int Calculate(int left, int right);
}

public class Plus : Calculation
{
    public override int Calculate(int left, int right)
    {
        return left + right;
    }
}

// ... остальные типы

public class Calculator
{
    public int Calculate(int left, int right, char opChar)
    {
        Calculation op;
        switch (opChar)
        {
            case '+': op = new Plus(); break;
            default: throw new NotSupportedException("Неверная операция");
        }
        return op.Calculate(left, right);
    }
}

public class Program
{
    static void Main(string[] args)
    {
        var calc = new Calculator();
        int result = calc.Calculate(2, 2, '+');
        Console.WriteLine(result);
        Console.ReadKey();
    }
}
→ Ссылка