main
1using System.Collections.Generic;
2using System.Linq;
3using System.Reflection;
4using gorilla.commons.infrastructure.thirdparty.Castle.DynamicProxy.Interceptors;
5
6namespace gorilla.commons.infrastructure.thirdparty.Castle.DynamicProxy
7{
8 public class CastleDynamicInterceptorConstraint<TypeToPutConstraintOn> : InterceptorConstraint<TypeToPutConstraintOn>
9 {
10 readonly MethodCallTracker<TypeToPutConstraintOn> call_tracker;
11 bool intercept_all_calls;
12
13 public CastleDynamicInterceptorConstraint(MethodCallTracker<TypeToPutConstraintOn> call_tracker)
14 {
15 this.call_tracker = call_tracker;
16 }
17
18 public TypeToPutConstraintOn intercept_on
19 {
20 get { return call_tracker.target; }
21 }
22
23 public void intercept_all()
24 {
25 intercept_all_calls = true;
26 }
27
28 public IEnumerable<string> methods_to_intercept()
29 {
30 return intercept_all_calls ? gell_all_methods() : call_tracker.methods_to_intercept();
31 }
32
33 IEnumerable<string> gell_all_methods()
34 {
35 return all_methods().Select(x => x.Name);
36 }
37
38 IEnumerable<MethodInfo> all_methods()
39 {
40 return typeof (TypeToPutConstraintOn).GetMethods(BindingFlags.Public | BindingFlags.Instance);
41 }
42 }
43}