【发布时间】:2018-05-24 04:38:41
【问题描述】:
在我们的应用程序中,我们有一个针对 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)
}
}
现在我想实现,当为国家 X 调用 GradeController 时,应该注入 ListModelFor X 并且对于国家 Y 相同。我有一个上下文,我可以从中找到它是哪个国家,但是,我不想在注入模型时,到处保留 if-else 逻辑。
有没有更好的方法来解决这个问题?设计模式?任何可以提供帮助的建议。
【问题讨论】:
标签: c# asp.net-mvc design-patterns dependency-injection