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}