main
 1using Castle.DynamicProxy;
 2
 3namespace solidware.financials.service.orm
 4{
 5    public class UnitOfWorkInterceptor : IInterceptor
 6    {
 7        readonly UnitOfWorkFactory unit_of_work_factory;
 8
 9        public UnitOfWorkInterceptor(UnitOfWorkFactory unit_of_work_factory)
10        {
11            this.unit_of_work_factory = unit_of_work_factory;
12        }
13
14        public void Intercept(IInvocation invocation)
15        {
16            using (var unit_of_work = unit_of_work_factory.create())
17            {
18                invocation.Proceed();
19                unit_of_work.commit();
20            }
21        }
22    }
23}