.Net 4.0 Оптимизированный код для рефакторинга существующих условий «если» и оператора «есть»

У меня есть следующий код C #. Работает отлично; ноGetDestination() метод перегружен несколькимиif условия с помощьюоператор.

В .Net 4.0 (или выше), каков наилучший способ избежать этих «если» условий?

РЕДАКТИРОВАТЬ: Роль является частью бизнес-модели, а назначение является просто артефактом одного конкретного приложения, использующего эту бизнес-модель.

КОД

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();
    }
}

РЕКОМЕНДАЦИИ

Словарь <T, Delegate> с делегатами разных типов: более чистые, не строковые имена методов?Джон Скит: заставляет задуматься и исследует делегатовif-else против switch против словаря делегатовСловарь с делегатом или переключателем?Выражение и делегат в c #

Ответы на вопрос(7)

Ваш ответ на вопрос