首页 > 其他 > 详细

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

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

如何通过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委托提高代码的重用

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!