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ź!