我正在开发一个MVC 4网站,我的控制器调用一个服务,我必须映射(一对一映射)回复我的viewmodel。我可以想到三种可能的方法: -
理念2和3看起来更好,因为映射方法可以跨控制器重用。
但我很困惑在2,3中使用哪一个。 如果我使用方法2,责任将被很好地定义,但会添加另一个类文件,这可能使解决方案在长期运行中的可维护性降低
如果我使用方法3,那么映射逻辑被限制在viewmodel中,但我觉得它违反了SRP(单一责任原则),因为viewmodel类负责显示元素和映射逻辑。
我们应该在何处放置映射逻辑? 如果您有任何链接,请分享这些链接。
答案 0 :(得分:2)
就个人而言,我会说停止自杀而只是使用像AutoMapper这样的东西,但是如果你想去手动路线,我推荐选项2的原因与推荐AutoMapper的原因大致相同:这个物品的类型属于库。我不知道这怎么会更难维持。事实上,将所有映射逻辑包含在项目中的一个位置或几个类中,听起来远比任何其他解决方案都更容易维护。
答案 1 :(得分:0)
我会提倡选项#2,因为映射层类的责任明确定义。
在我看来,映射逻辑的明显位置完全证明了类数量的增加。我将它比作多个JavaScript文件作为模块,同时增加了要维护的文件数量,更清楚地了解了系统中的内容。