其实提高代码的重用,有几个途径
a.继承
b.工具方法
c.使用委托
a,b两点都很容易理解,说一下"c"这一点,举个DataContext事务的例子
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();
}
}
以上代码很常见吧,是不是每个使用事务地方都需要这么写,其实这个时候我们可以利用委托来实现
public class DbInvoker
{
public void Transaction(Action<DataContext> aciton)
{
using (var context = new DataContext())
{
context.BeginTransaction();
try
{
aciton(context);
context.Commit();
}
catch
{
context.Rollback();
}
}
}
}
以后用到事务的地方这样调用就行了
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
原文:http://www.cnblogs.com/zfanlong1314/p/3908565.html