No he usado mucho los genéricos y por lo tanto no puedo determinar si es posible convertir los siguientes tres métodos 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.¿Cómo convertir estos 3 métodos en uno usando los genéricos 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");
}
}
Estoy construyendo un analizador simple expresión que luego tiene que evaluar las operaciones binarias simples como la suma/resta etc utilizo los métodos anteriores para obtener las matemáticas reales realizaron utilizando los tipos pertinentes. ¡Pero tiene que haber una mejor respuesta!
Al contrario de la especulación popular, Marc y yo somos en realidad dos personas separadas. Parece que ocasionalmente compartimos una opinión. –
Tal vez solo * pensamos * que ... alguna vez veas Fight Club? –
Cerebros intercambiables? Guay. – EricSchaefer