.NET应用架构设计—用户端的防腐层作用及设计(4)
来源:未知 责任编辑:责任编辑 发表时间:2015-05-17 16:44 点击:次
为了能在运行时动态的注入到控制器中,你需要做一些基础工作,扩展MVC控制器的初始化代码。这样我们就可以对OrderController进行完整的单元测试。
刚才说了,如果显示逻辑都是这样的及其简单,那么一切都没有问题了,真实的显示逻辑非常的复杂而且多变,并不是所有的类型转换都能使用Automapper这一类动态映射工具解决,有些类型之间的转换还有逻辑在里面。GetOrderById(long oId)方法是为了演示此处的重构服务调用组件用的。
大部分情况下我们是需要组合多个服务调用的,将其多个结果组合起来返回给前端的,这里的OrderViewModel对象里面的Items属性类型OrderItem类型中包含了一个Product类型属性,在正常情况下我们只需要获取订单的条目就行了,但是有些时候确实需要将条目中具体的产品信息也要返回给前台进行部分信息的展现。
using System.Collections.Generic; namespace OrderManager.Port.Models { public class OrderViewModel { public long OId { get; set; } public string OName { get; set; } public string Address { get; set; } public List<OrderItem> Items { get; set; } } }
在OrderViewModel中的Items属性是一个List<OrderItem>集合,我们再看OrderItem属性。
using System.Collections.Generic; namespace OrderManager.Port.Models { public class OrderItem { public long OitemId { get; set; } public long Pid { get; set; } public float Price { get; set; } public int Number { get; set; } public Product Product { get; set; } } }
它里面包含了一个Product实例,有些时候需要将该属性赋上值。
namespace OrderManager.Port.Models { public class Product { public long Pid { get; set; } public string PName { get; set; } public long PGroup { get; set; } public string Production { get; set; } } }
相关新闻>>
- 发表评论
-
- 最新评论 更多>>