Simple impl to MockRailsEngineContext.Url
[castle.git] / Tools / DynamicProxy / Castle.DynamicProxy.Tests / Interceptors / RefAndOutInterceptor.cs
blob37ef16ea5e8858c03fa7e5bb9291249b4dea6a0a
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 Castle.DynamicProxy.Test.Interceptors
17 using System;
18 using System.Text;
19 using Castle.DynamicProxy.Test.Classes;
22 public class RefAndOutInterceptor : LogInvokeInterceptor
24 public RefAndOutInterceptor()
29 protected override void PostProceed(IInvocation invocation, ref object returnValue, params object[] args)
31 base.PostProceed(invocation, ref returnValue, args);
33 switch (invocation.Method.Name)
35 case "RefInt":
36 case "OutInt":
37 args[0] = ((int) args[0]) + 100;
38 break;
39 case "RefString":
40 case "OutString":
41 args[0] = ((string) args[0]) + "_xxx";
42 break;
43 case "RefDateTime":
44 case "OutDateTime":
45 args[0] = ((DateTime) args[0]).AddMonths(1);
46 break;
47 case "RefSByteEnum":
48 case "OutSByteEnum":
49 args[0] = ((SByteEnum) args[0]) == SByteEnum.One ? SByteEnum.Two : SByteEnum.One;
50 break;
51 default:
52 throw new NotSupportedException(invocation.Method.Name);