В нашем приложении у нас есть общая база кода для страны X, теперь мы добавляем поддержку страны Y, используя полиморфизм.
Давайте рассмотрим этот пример:
public abstract class GradeListModelBase
{
public abstract void CalculateGrade();
public virtual IEnumerable<dynamic> GetGrade()
{
//logic to get grade common for X and Y country.
}
}
public class GradeListModelForX : GradeListModelBase
{
public override void CalculateGrade()
{
//logic to get grade for X
}
}
public class GradeListModelForY : GradeListModelBase
{
public override void CalculateGrade()
{
//logic to get grade for Y
}
}
public class GradeController : Controller
{
public ActionResult List(GradeListModelBase model)
{
model.CalculateGrade();
model.GetGrade();
return View("List", model)
}
}
Теперь я хочучтобы добиться этого, когда GradeController вызывается для страны X, ListModelFor X должен вводиться и то же самое для страны Y. У меня есть контекст, из которого я могу найти, в какой стране он находится, однако я не хочу везде сохранять логику if-elseпри введении моделей.
Есть ли лучший подход для решения этой проблемы?Шаблон дизайна?Любое предложение, которое могло бы помочь.