.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 #.

Respuestas a la pregunta(7)

Su respuesta a la pregunta