.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; }
    }
}
	
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • 遍历ArrayList易犯错误
  • 使用C#编写LED样式时钟控件
  • C#对XML操作:一个处理XML文件的类(1)
  • 怎样用C#实现完整文档打印功能
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 使用c#+(datagrid控件)编辑xml文件
  • C#生成CHM文件(应用篇)之代码库编辑器(5)【总结、程序、源代码】
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1