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