Как превратить эти 3 метода в один, используя дженерики C #?

Я не очень много использовал дженерики и поэтому не могу понять, можно ли превратить следующие три метода в один, используя дженерики, чтобы уменьшить дублирование. На самом деле мой код в настоящее время имеет шесть методов, но если вы можете решить его для трех, тогда остальные должны все равно работать с тем же решением.

    private object EvaluateUInt64(UInt64 x, UInt64 y)
    {
        switch (Operation)
        {
            case BinaryOp.Add:
                return x + y;
            case BinaryOp.Subtract:
                return x - y;
            case BinaryOp.Multiply:
                return x * y;
            case BinaryOp.Divide:
                return x / y;
            case BinaryOp.Remainder:
                return x % y;
            default:
                throw new ApplicationException("error");
        }
    }

    private object EvaluateFloat(float x, float y)
    {
        switch(Operation)
        {
            case BinaryOp.Add:
                return x + y;
            case BinaryOp.Subtract:
                return x - y;
            case BinaryOp.Multiply:
                return x * y;
            case BinaryOp.Divide:
                return x / y;
            case BinaryOp.Remainder:
                return x % y;
            default:
                throw new ApplicationException("error");
        }
    }

    private object EvaluateDouble(double x, double y)
    {
        switch (Operation)
        {
            case BinaryOp.Add:
                return x + y;
            case BinaryOp.Subtract:
                return x - y;
            case BinaryOp.Multiply:
                return x * y;
            case BinaryOp.Divide:
                return x / y;
            case BinaryOp.Remainder:
                return x % y;
            default:
                throw new ApplicationException("error");
        }
    }

Я создаю простой синтаксический анализатор выражений, который затем должен оценить простые двоичные операции, такие как сложение / вычитание и т. Д. Я использую вышеупомянутые методы, чтобы получить действительные математические вычисления, выполняемые с использованием соответствующих типов. Но должен быть лучший ответ!

Ответы на вопрос(2)

Ваш ответ на вопрос