架构之旅~一个操作的返回要有一个标准,看我的公用消息类

当我们在开发过程中,遇到添加,编辑,删除等操作,这些操作对于数据库来都是成功的,所以在DATA层的CURD操作一般没有返回值,而对于业务层就不同的,我们需要将处理结果返回给WEB层,而如果DATA出现异常了,这时业务层要知道,并把结果进行处理,然后返回给WEB层,而返回的载体是我们要统一的,因为我们一个bool类型是不能满足要求的,它可以还会伴随其它信息,包括可能出现的实体完整信息。

看看我的VMessage类,它有一个属性IsComplete,它的值由它内部的messageList集合控制,而这个集合如果没有信息,说明没有异常出现,IsComplete就是true,反之它为false,而我们可以通过AddItemt 和Clear等集合操作对messageList进行追加,清除等操作。

好了,现在看一下大致的代码结构,大家可以直接应用到程序中:

 1  /// <summary>
 2     /// 通用消息序列类
 3     /// </summary>
 4     public class VMessage : IEnumerable<string>
 5     {
 6         /// <summary>
 7         /// 是否完成
 8         /// </summary>
 9         public bool IsComplete
10         {
11             get
12             {
13                 return messageList.Count == 0;//如果没有异常记录,返回返回为true
14             }
15         }
16 
17         /// <summary>
18         /// 可以返回一个IEntity类型的实体
19         /// </summary>
20         public EntityBase Entity { get; set; }
21 
22         /// <summary>
23         /// 消息序列
24         /// </summary>
25         List<string> messageList = new List<string>();
26 
27         /// <summary>
28         /// 向序列中添加新的项
29         /// </summary>
30         /// <param name="item"></param>
31         public void AddItem(string item)
32         {
33             this.messageList.Add(item);
34         }
35 
36         /// <summary>
37         /// 向序列中追加一个新的序列
38         /// </summary>
39         /// <param name="itemRange">序列对象</param>
40         public void AddItemRange(IEnumerable<string> itemRange)
41         {
42             this.messageList.AddRange(itemRange);
43         }
44         /// <summary>
45         /// 消息对象
46         /// </summary>
47         public Object Object { get; set; }
48 
49         /// <summary>
50         /// 清空所有现有项
51         /// </summary>
52         public void Clear()
53         {
54             this.messageList.Clear();
55         }
56 
57         /// <summary>
58         /// 索引器
59         /// </summary>
60         /// <param name="index">索引</param>
61         /// <returns>相应值</returns>
62         public string this[int index]
63         {
64             get { return this.messageList[index]; }
65 
66         }
67 
68         /// <summary>
69         /// 得到所有消息,每条用逗号分开
70         /// </summary>
71         /// <returns></returns>
72         public string GetMessage()
73         {
74             return string.Join(",", messageList);
75         }
76         #region IEnumerable<string> 成员
77 
78         public IEnumerator<string> GetEnumerator()
79         {
80             return this.messageList.GetEnumerator();
81         }
82 
83         #endregion
84 
85         #region IEnumerable 成员
86 
87         IEnumerator IEnumerable.GetEnumerator()
88         {
89             return this.messageList.GetEnumerator();
90         }
91 
92         #endregion
93     }

 

应用在程序中,可能是这样的结构

BLL层:

而在WEB层直接调用它,可以判断它的VM结果

posted @ 2012-11-15 10:26  张占岭  阅读(1026)  评论(3编辑  收藏  举报