一个方法调用返回值的包含类

在我们开发的系统中,经常有这样一种情况:

  用户点击“保存”按钮之后,要将数据保存到数据库中,如果保存成功,则弹出提示框或不弹出提示框而直接更新数据;否则,如果失败,则弹出错误提示框。提示用户“保存失败,... (后面是相关错误信息) ”。为了使这些方法的调用过程更清晰,我自己定义了一个方法返回的包装类: ResultEx ,类图如下:

  

在这个类中,有几个ResultEx的构造函数,可以根据不同的情况,返回不同构造的ResultEx对象。ResultEx的全部代码如下:

 

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Windows.Forms;

namespace  eHead.Common
{
    
public   enum  ResultType :  int
    {
        
///   <summary>
        
///  成功
        
///   </summary>
        Success  =   1 ,
        
///   <summary>
        
///  失败
        
///   </summary>
        Fail  =   0
    }
    [Serializable]
    
public   class  ResultEx
    {
        
private  ResultType _ResultType;
        
///   <summary>
        
///  
        
///   </summary>
         public  ResultType ResultType
        {
            
get  {  return  _ResultType; }
            
set  { _ResultType  =  value; }
        }

        
private  Exception _Ex  =   new  Exception();
        
public  Exception Ex
        {
            
get  {  return  _Ex; }
            
set  { _Ex  =  value; }
        }

        
private   string  _Message;
        
public   string  Message
        {
            
get  {  return  _Message; }
            
set  { _Message  =  value; }
        }
        
private   object  _Tag;
        
public   object  Tag
        {
            
get  {  return  _Tag; }
            
set  { _Tag  =  value; }
        }

        
public  ResultEx(ResultType ResultType,  string  message, Exception ex)
        {
            _ResultType 
=  ResultType;
            
this ._Message  =  message;
            
this ._Ex  =  ex;
        }

        
public  ResultEx(ResultType ResultType,  string  message)
        {
            _ResultType 
=  ResultType;
            
this ._Message  =  message;
        }

        
public  ResultEx(ResultType ResultType, Exception ex)
        {
            _ResultType 
=  ResultType;
            
this ._Ex  =  ex;
            
this ._Message  =  _Ex.Message;
        }

        
public  ResultEx(ResultType ResultType)
        {
            
this ._ResultType  =  ResultType;
        }

        
public  ResultEx(ResultType ResultType,  object  tag)
        {
            
this ._ResultType  =  ResultType;
            
this ._Tag  =  tag;
        }

    }
}

 这个类的结构很简单,那么,如何使用它呢? 现在,我想插入新加一个部门信息到数据库中,后台插入的方法这样写:

         public  ResultEx InsertDept(DeptObj dept)
        {
            
try
            {
                
// Insert Dept code here....

                
return   new  ResultEx(ResultType.Success);
            }
            
catch  (Exception ex)
            {
                
return   new  ResultEx(ResultType.Fail, ex); //既可以在这里直接把错误发送出去,也可以在这里直接返回经过包装后的消息,如:
                //return new ResultEx(ResultType.Fail, "插入到数据库失败," + ex.Message);
            }
        }

客户端的插入方法这样写:

         private  ResultEx InsertDept()
        {
            _CurrentDept 
=   new  DeptObj();
            
// .. 给DeptObj的各个属性赋值
            ResultEx result  =  Service.InsertDept(_CurrentDept);
            
if  (result.ResultType  ==  ResultType.Fail)
            {
                
return   new  ResultEx(ResultType.Fail,  " 增加部门失败, "   +  result.Message);
            }
            
return  result;
        }

这样,客户端每调用器端的方法时,都可以使用ResultEx这个类来进行方法返回的包装。只需要声明一个新的ResultEx对象来接收方法的返回值。
   方法如果执行成功,则ResultEx的ResultType == ResultType.Success ,你可以在这里弹出一个对话框,提示方法保存成功,也可以直接更新页面数据。反之,方法如果执行失败,则可以从ResultEx对象中去得到失败的信息,并且可以对这个失败信息进行一个包装。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值