Fixing an issue with output parameters that are of type IntPtr
[castle.git] / AspectSharp / AopAlliance / Intercept / IJoinpoint.cs
blob17e7686dbd3e4ffc33f2e0b8f00b1a1842f064df
1 using System;
3 namespace AopAlliance.Intercept
5 /// <summary>
6 /// <p>This interface represents a generic runtime joinpoint (in the AOP
7 /// terminology).</p>
8 ///
9 /// <p>A runtime joinpoint is an <i>event</i> that occurs on a static
10 /// joinpoint (i.e. a location in a the program). For instance, an
11 /// invocation is the runtime joinpoint on a method (static joinpoint).
12 /// The static part of a given joinpoint can be generically retrieved
13 /// using the <c>GetStaticPart()</c> method.</p>
14 ///
15 /// <p>In the context of an interception framework, a runtime joinpoint
16 /// is then the reification of an access to an accessible object (a
17 /// method, a constructor, a field), i.e. the static part of the
18 /// joinpoint. It is passed to the interceptors that are installed on
19 /// the static joinpoint.</p>
20 ///
21 /// <seealso cref="AopAlliance.Intercept.IInterceptor"/>
22 /// </summary>
23 public interface IJoinpoint
25 /// <summary>
26 /// <p>Returns the static part of this joinpoint.</p>
27 /// <p>The static part is an accessible object on which a chain of interceptors are installed.</p>
28 /// </summary>
29 System.Reflection.MemberInfo StaticPart { get; }
31 /// <summary>
32 /// <p>Returns the object that holds the current joinpoint's static part.</p>
33 /// <p>For instance, the target object for an invocation.</p>
34 /// </summary>
35 object This { get; }
37 /// <summary>
38 /// <p>Proceeds to the next interceptor in the chain.</p>
39 /// <p>The implementation and the semantics of this method depends on the actual joinpoint type (see the children interfaces).</p>
40 /// </summary>
41 /// <returns>See the children interfaces' proceed definition.</returns>
42 /// <exception cref="System.Exception">if the joinpoint throws an exception.</exception>
43 object Proceed();