• 代码重构问题


    下面是我所开发的一个UI里面的C#代码,主要就是几个按钮点击事件,按照我们公司的要求在事件里面必须加try-catch-finally做异常处理,不过我感觉每个事件里面都要加相同的try-catch-finally代码,感觉没有达到代码重用,但又不是很清楚改如何重用这部分代码,故特此咨询博客园的大牛们,望大牛不吝赐教!不胜感激!
    代码
    private void AddButton_Click()
    {
      try
      {
        this.Cursor=Cursors.Wait;
        this._present.Add();//调用另一个Class里面的Add方法
      }
      catch(Exception e)
      {
        throw e;
      }
      finally
      {
        this.Cursor=Cursore
      }
    }

    private void DeleteButton_Click()
    {
      try
      {
        this.Cursor=Cursors.Wait;
        this._present.Delete();//调用另一个Class里面的Delete方法
      }
      catch(Exception e)
      {
        throw e;
      }
      finally
      {
        this.Cursor=Cursore
      }
    }

    private void SaveButton_Click()
    {
      try
      {
        this.Cursor=Cursors.Wait;
        this._present.Save();();//调用另一个Class里面的Save方法
      }
      catch(Exception e)
      {
        throw e;
      }
      finally
      {
        this.Cursor=Cursore
      }
    }

    http://www.cnblogs.com/artech/archive/2010/03/26/1697298.html

    private void PresentCall(Fun<T, void> func) //把T换成你那个present的类型

    窃以为这种重构没必要,如果真不想多写code的话,就试试AOP吧,比如PostSharp,针对每个方法,只需加一个attrbute即可:

    可以看看PPT里的demo
    http://www.cnblogs.com/blodfox777/archive/2010/01/14/AOP-With-PostSharp.html


    02{
    03  try
    04  {
    05    this.Cursor=Cursors.Wait;
    06    func;
    07  }
    08  catch(Exception e)
    09  {
    10    throw e;
    11  }
    12  finally
    13  {
    14    this.Cursor=Cursore
    15  }
    16}


    Aop

    果多的话,理想是这样. 不过这个AOP...
    view source

    print
    ?1[TryCatch(OnError=....,Finally=...)]
    2private void AddButton_Click()
    3{
    4}

  • 相关阅读:
    ubuntu python3 安装pip
    Windows远程桌面连接ubuntu 16
    Python 高级编程——单例模式
    学习资料推荐
    经典 测试开发面试题 (随时更新)
    mac上生成go文件失败报错,gRpc-- protoc-gen-go: program not found or is not executable
    小白从零开始学编程(五)--python数据类型--字符串
    小白从零开始学编程(三)--python基本概念
    小白从零开始学编程(二)--python虚拟环境和编辑器
    小白从零开始学编程--python安装与环境搭建
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1788710.html
Copyright © 2020-2023  润新知