码迷,mamicode.com
首页 > 其他好文 > 详细

C# 通过Action委托提高代码的重用

时间:2014-08-13 00:25:54      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   io   strong   ar   

如何通过Action重复的代码

  其实提高代码的重用,有几个途径

    a.继承

    b.工具方法

    c.使用委托

    a,b两点都很容易理解,说一下"c"这一点,举个DataContext事务的例子       

bubuko.com,布布扣
using(var context = new DataContext())
{
     context .BeginTransaction();
     try
    {
      context.User.GetUser();
      context.User.add(new User{name="xian"}); 
context.User.add(new User{name="hong"}); context.Commit(); } catch { context.Rollback(); } }
bubuko.com,布布扣

以上代码很常见吧,是不是每个使用事务地方都需要这么写,其实这个时候我们可以利用委托来实现

bubuko.com,布布扣
  public class DbInvoker
        {
            public void Transaction(Action<DataContext> aciton)
            {
                using (var context = new DataContext())
                {
                    context.BeginTransaction();
                    try
                    {
                        aciton(context);
                        context.Commit();
                    }
                    catch
                    {
                        context.Rollback();
                    }
                }
            }
        }
bubuko.com,布布扣

以后用到事务的地方这样调用就行了

DbInvoker.Transaction(context=>{
      context.User.Add(new User{name="xian"});
      context.User.Add(new User{name="hong"});
});

是不是方便了许多.

上述主要是保持一个原则:提出变化,封装固定操作!

其中:BeginTransaction、Commit、Rollback 为固定操作;
而context.User.GetUser();
context.User.add(new User{name="xian"}); 
context.User.add(new User{name="hong"});
为固定操作。

aciton(context); 可以这样理解相当于一个无返回值,参数为Context方法。

Public void ExecutAction(Context content)
{

}


C# 通过Action委托提高代码的重用,布布扣,bubuko.com

C# 通过Action委托提高代码的重用

标签:style   blog   http   color   使用   io   strong   ar   

原文地址:http://www.cnblogs.com/zfanlong1314/p/3908565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!