Added container accessor to Castle.Core
[castle.git] / AspectSharp / AspectSharp.LoggingExample / Model / LoggerInterceptor.cs
blob1cd18264bb990200a48166024c2286805e987cd7
1 // Copyright 2004-2007 Castle Project - http://www.castleproject.org/
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 namespace AspectSharp.LoggingExample.Model
17 using System;
18 using System.Reflection;
19 using AopAlliance.Intercept;
22 public class LoggerInterceptor : IMethodInterceptor
24 public LoggerInterceptor()
28 public object Invoke(IMethodInvocation invocation)
30 LogMethod(invocation.Method);
31 LogArguments(invocation.Arguments);
33 object result = invocation.Proceed();
35 LogReturn(result);
37 return result;
40 private void LogMethod(MethodBase method)
42 Console.WriteLine("[Aspect# Logger Interceptor][method]Name: {0}", method.Name);
45 private void LogReturn(object result)
47 Console.WriteLine("[Aspect# Logger Interceptor][return]Value: {0}", result);
50 private void LogArguments(object[] arguments)
52 for (int i = 0; i < arguments.Length; i++)
54 Console.WriteLine("[Aspect# Logger Interceptor][argument]Index: {0}. Value: {1}", i, arguments[i]);