首页 > 代码库 > C# 通过Action委托提高代码的重用
C# 通过Action委托提高代码的重用
如何通过Action重复的代码
其实提高代码的重用,有几个途径
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)
{
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。