Как превратить эти 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");
}
}
Я создаю простой синтаксический анализатор выражений, который затем должен оценить простые двоичные операции, такие как сложение / вычитание и т. Д. Я использую вышеупомянутые методы, чтобы получить действительные математические вычисления, выполняемые с использованием соответствующих типов. Но должен быть лучший ответ!