0

我正在一个 MVC 4 网站上工作,我的控制器在该网站上调用一个服务,并且我必须将响应映射(一对一映射)回我的视图模型。我可以想到三种可能的方法:-

  1. 在控制器本身中有映射
  2. 有一个单独的映射层(我的项目中的一个单独的文件夹),我的所有映射逻辑都将驻留在其中,控制器将调用此方法
  3. 在 viewmodel 类中有映射逻辑。

想法 2 和 3 显然看起来更好,因为映射方法可以跨控制器重用。

但我对使用 2 、 3 中的哪一个感到困惑。如果我使用方法 2,职责将得到很好的定义,但会添加另一个类文件,这可能会使解决方案在长期内不太易于维护

如果我使用方法 3,那么映射逻辑被限制在视图模型中,但我觉得它违反了 SRP(单一责任原则),因为视图模型类同时负责显示元素和映射逻辑。

关于我们应该将映射逻辑放在哪里,是否有一个好的做法?如果您有任何链接,请也分享这些链接。

4

2 回答 2

2

就个人而言,我会说停止自杀,只使用AutoMapper之类的东西,但如果你想走手动路线,我会推荐选项 2,原因与我推荐 AutoMapper 的原因大致相同:这种类型的东西属于图书馆. 我不明白这将如何更难维护。事实上,将所有映射逻辑包含在一个类中或将多个类都包含在项目的一个位置中,这听起来任何其他解决方案都更容易维护。

于 2013-10-23T20:50:43.560 回答
0

我会提倡选项 #2,因为映射层类的责任明确定义。

在我看来,映射逻辑的明显位置完全证明了类数量的增加是合理的。我把它比作有多个 JavaScript 文件作为模块,虽然它增加了要维护的文件的数量,但它可以更清楚地了解什么负责你的系统中的什么。

于 2013-10-23T20:48:15.907 回答