使用模板选择器违反Liskov和Open-Closed原则

时间:2015-05-07 06:53:32

标签: c# asp.net wpf oop design-patterns

我有一个WPF MVVM和ASP MVC应用程序,可以显示有关学生和教师的信息。 WPF应用程序从Web服务获取并保存有关学生和教师的信息,并将其显示在列表中。 学生和教师都有名字,姓氏和年龄。 每个学生也有GPA(平均成绩点)。 每位老师也有照片。 需要在ASP MVC应用程序中显示相同的学生和教师列表。

所以在我的实现中我有AbstractPersonDto,StudentDto和TeacherDto。 我有服务:

interface IService
{
   IList<AbstractPersonDto> GetAllPersons();
   void SaveAllPersons(IList<AbstractPersonDto> persons);
}

我还查看了模型:WPF中的AbstractPersonViewModel,StudentViewModel,TeacherViewModel以及ASP应用程序中的另外3个。

第一个问题是:从IList<AbstractPersonDto>IList<AbstractPersonViewModel>的映射是否违反了Open-Closed和Liskov原则?

在我在WPF和ASP MVC中的视图中,我使用DataTemplate和DisplayFor分别选择适当的模板和局部视图。

所以第二个问题是:使用此模板选择器是否也违反了Open-Closed和Liskov原则?

更新1: 根据评论,我想我需要澄清我的问题: 如果我使用Automapper(即),它将执行类似“is”的操作或在后台进行类型比较。或不?另外,我的MainViewModel包含对List的引用,我的View通过DataTemplate迭代在这个列表后面的场景并选择合适的模板(somethink也喜欢“is”操作符)。这是否意味着它会破坏这一原则?当我在Dto中更改某些内容时,我也应该更改我的视图模型(级联效果)。

0 个答案:

没有答案