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

当我们在开发过程中,遇到添加,编辑,删除等操作,这些操作对于数据库来都是成功的,所以在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结果

发表评论