Jak zamienić te 3 metody w jedną używając generycznych C #?

Nie używałem generyków w znacznym stopniu i nie mogę się zorientować, czy możliwe jest przekształcenie następujących trzech metod w jedną, w której stosuje się ogólne, aby zmniejszyć duplikację. W rzeczywistości mój kod ma obecnie sześć metod, ale jeśli można go rozwiązać dla trzech, reszta powinna działać tak samo z tym samym rozwiązaniem.

    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");
        }
    }

Buduję prosty parser wyrażeń, który następnie musi ocenić proste operacje binarne, takie jak dodawanie / odejmowanie itp. Korzystam z powyższych metod, aby uzyskać rzeczywistą matematykę za pomocą odpowiednich typów. Ale musi być lepsza odpowiedź!

questionAnswers(2)

yourAnswerToTheQuestion