浏览 4540 次
锁定老帖子 主题:一个不错的开源动态代理类库
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-25
最后修改:2008-12-20
以下是我在事务处理中的应用。 public class DbTransactionProxy : IInterceptor { Object target = null; private DbTransactionProxy(Object target) { this.target = target; } public static T NewInstance<T>(Object target) { return new ProxyFactory().CreateProxy<T>(new DbTransactionProxy(target)); } #region IInterceptor 成员 object IInterceptor.Intercept(InvocationInfo info) { Object[] attrs = info.TargetMethod.GetCustomAttributes(typeof(TransactionAttribute), true); object ret = null; if (attrs != null && attrs.Length > 0) { TransactionAttribute trans = (TransactionAttribute)attrs[0]; if (trans.IsTransaction) { //开始事务处理 try { SessinoUtil.BeginTransaction(trans.ConnectionString); ret = info.TargetMethod.Invoke(target, info.Arguments); SessinoUtil.CommitTransaction(trans.ConnectionString); } catch(Exception ex) { SessinoUtil.RollbackTransaction(trans.ConnectionString); } } } else { ret = info.TargetMethod.Invoke(target, info.Arguments); } return ret; } #endregion } 类似的,可以实现AOP缓存一类的应用,这里不多述 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-12
visualcatsharp 写道 而castle是否开源就不太清楚了。 castle是开源的 |
|
返回顶楼 | |