¿Cómo convertir estos 3 métodos en uno usando los genéricos de C #?

No he usado mucho genéricos y, por lo tanto, no puedo averiguar si es posible convertir los tres métodos siguientes en uno usando genéricos para reducir la duplicación. En realidad, mi código actualmente tiene seis métodos, pero si puede resolverlo para los tres, el resto debería funcionar de todos modos con la misma solución.

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

Estoy creando un analizador de expresión simple que luego necesita evaluar las operaciones binarias simples como la suma / resta, etc. Utilizo los métodos anteriores para obtener los cálculos reales realizados con los tipos relevantes. ¡Pero tiene que haber una mejor respuesta!

Respuestas a la pregunta(2)

Su respuesta a la pregunta