.Net 4.0 Código optimizado para refactorizar las condiciones existentes "if" y el operador "is"
Tengo el siguiente código C #. Funciona bien; pero elGetDestination()
El método está lleno de múltiplesif
condiciones mediante el uso dees operador.
En .Net 4.0 (o mayor), ¿cuál es la mejor manera de evitar estas condiciones "si"?
EDITAR: el rol es parte del modelo de negocio, y el destino es puramente un artefacto de una aplicación particular que usa ese modelo de negocio.
CÓDIGO
public class Role { }
public class Manager : Role { }
public class Accountant : Role { }
public class Attender : Role { }
public class Cleaner : Role { }
public class Security : Role { }
class Program
{
static string GetDestination(Role x)
{
string destination = @"\Home";
if (x is Manager)
{
destination = @"\ManagerHomeA";
}
if (x is Accountant)
{
destination = @"\AccountantHomeC";
}
if (x is Cleaner)
{
destination = @"\Cleaner";
}
return destination;
}
static void Main(string[] args)
{
string destination = GetDestination(new Accountant());
Console.WriteLine(destination);
Console.ReadLine();
}
}
Referencias
Diccionario <T, delegado> con delegados de diferentes tipos: ¿Nombres de métodos de limpieza, sin cadenas?Jon Skeet: haciendo volar la reflexión y explorando delegadosif-else vs. switch vs. diccionario de delegados¿Diccionario con delegado o cambio?Expresión y delegado en c #.