main
 1using Castle.DynamicProxy;
 2using gorilla.commons.infrastructure.thirdparty.Castle.DynamicProxy.Interceptors;
 3
 4namespace gorilla.commons.infrastructure.thirdparty.Castle.DynamicProxy
 5{
 6    public class CastleDynamicMethodCallTrackerFactory : MethodCallTrackerFactory
 7    {
 8        private readonly ProxyGenerator generator;
 9
10        public CastleDynamicMethodCallTrackerFactory() : this(new ProxyGenerator())
11        {
12        }
13
14        public CastleDynamicMethodCallTrackerFactory(ProxyGenerator generator)
15        {
16            this.generator = generator;
17        }
18
19        public MethodCallTracker<TypeToProxy> create_for<TypeToProxy>()
20        {
21            var call_tracker_interceptor = new CastleDynamicMethodCallTracker<TypeToProxy>();
22            var target = generator.CreateInterfaceProxyWithoutTarget<TypeToProxy>(call_tracker_interceptor);
23            call_tracker_interceptor.target = target;
24            return call_tracker_interceptor;
25        }
26    }
27}