首页软件新闻工具软件操作系统办公软件聊天工具多媒体网页制作网页设计网站运营平面设计作品欣赏数据库程序组网
Ghost | Kugoo | 遨游 | Xp | Dw | Fw | Flash | Ps | 迅雷 | CD | ill | CAD | 五笔 | Word | Excel | Wps | Msn | QQ | 学电脑 | Asp | Php | Jsp | 3Dmax | 海报 | 包装 | 标志 | 地产 | 插画

一种基于.Net 2.0的另类AOP

来源:佚名(读取中...) 2006-6-10 【字体: 】 切换为


  也许我要从配置文件里取很多值,涉及到各种类型,或者是从别处取值,但也涉及到类型转换等需要异常处理的情况,这时我们发现,这里“异常处理”成了这类方法的一个“方面”,如果使用AOP的方法,应该对这类方法进行拦截,并进行统一的异常处理。

  利用C#2.0,我们可以把这个拦截工作变得很简单。

  第一步,让它支持异常处理:

  我们来定义一个统一的方法,使它可以进行异常处理:

 public T GetValue()

  {

   try

   {

   return SomeMethod()

   }

   catch

   {}

  }

  这里我们使用了C#2.0的泛型特性,使它可以返回任何类型的结果,并且带有编译时类型安全检查,不像C# 1.x那样,返回一个object,仍需要检查object的类型,特别是对于简单类型,如int,则免去了装箱过程。

  但这个方法有个很明显的问题,就是当异常发生时,catch的部分并没有返回值,从而导致它编译不能通过。注意到当发生异常时应该返回一个缺省值,而缺省值和返回值的类型必然是相同的,所以可以为它添加一个参数作为缺省值:

  第二步,添加缺省值:

  public T GetValue(T defaultValue)

  {

   try

   {

   return SomeMethod()

   }

   catch

   {

   return defaultValue;

   }

  }

上一页  [1] [2] [3] [4] 下一页

    相关新闻
    用户评论
数据载入中,请稍后……
评论内容:不能超过100字,不需审核,请自觉遵守互联网相关政策法规。
发表评论: 匿名发表 用户名: loading 位网友发表了评论 查看评论
(0/100)
    推广服务
IT部落推荐阅读
·生活服务
·精彩图文
·赞助商链接