You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2004/06/26 07:01:51 UTC

svn commit: rev 22116 - in avalon/trunk/central/laboratory/avalon-net/DynamicProxy: . DynamicProxyTest

Author: hammett
Date: Fri Jun 25 22:01:51 2004
New Revision: 22116

Added:
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMyInterface.cs   (contents, props changed)
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMySecondInterface.cs   (contents, props changed)
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IServiceStatus.cs   (contents, props changed)
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MyInterfaceImpl.cs   (contents, props changed)
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MySecondInterfaceImpl.cs   (contents, props changed)
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ServiceStatusImpl.cs   (contents, props changed)
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/StandardInvocationHandler.cs   (contents, props changed)
Modified:
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs
Log:
Refactoring in test cases. Applied suggestion from Stefan Zobel (stefan.zobel at lycos.de) from Spring.Net devel list.

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Apache.Avalon.DynamicProxy.csproj	Fri Jun 25 22:01:51 2004
@@ -1,105 +1,110 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "Apache.Avalon.DynamicProxy"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "Apache.Avalon.DynamicProxy"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "..\bin\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IInvocationHandler.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ProxyGenerator.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "Apache.Avalon.DynamicProxy"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "Apache.Avalon.DynamicProxy"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "..\bin\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IInvocationHandler.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ProxyGenerator.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "StandardInvocationHandler.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/AssemblyInfo.cs	Fri Jun 25 22:01:51 2004
@@ -23,7 +23,7 @@
 [assembly: AssemblyCopyright("Copyright (c) 2004 The Apache Software Foundation")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]		
-[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.0.1")]
 
 #if STRONG
 [assembly: AssemblyDelaySign(false)]

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxy.sln	Fri Jun 25 22:01:51 2004
@@ -1,29 +1,29 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy", "Apache.Avalon.DynamicProxy.csproj", "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy.Test", "DynamicProxyTest\Apache.Avalon.DynamicProxy.Test.csproj", "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		Debug = Debug
-		Release = Release
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.ActiveCfg = Debug|.NET
-		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.Build.0 = Debug|.NET
-		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.ActiveCfg = Release|.NET
-		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.Build.0 = Release|.NET
-		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.ActiveCfg = Debug|.NET
-		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.Build.0 = Debug|.NET
-		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.ActiveCfg = Release|.NET
-		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.Build.0 = Release|.NET
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy", "Apache.Avalon.DynamicProxy.csproj", "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Avalon.DynamicProxy.Test", "DynamicProxyTest\Apache.Avalon.DynamicProxy.Test.csproj", "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.ActiveCfg = Debug|.NET
+		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Debug.Build.0 = Debug|.NET
+		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.ActiveCfg = Release|.NET
+		{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}.Release.Build.0 = Release|.NET
+		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.ActiveCfg = Debug|.NET
+		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Debug.Build.0 = Debug|.NET
+		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.ActiveCfg = Release|.NET
+		{EF89321E-FB2A-41B6-85B3-794D50A55CF1}.Release.Build.0 = Release|.NET
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/Apache.Avalon.DynamicProxy.Test.csproj	Fri Jun 25 22:01:51 2004
@@ -1,110 +1,140 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "Apache.Avalon.DynamicProxy.Test"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "Apache.Avalon.DynamicProxy.Test"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "..\..\bin\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-                <Reference
-                    Name = "DProxy"
-                    Project = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "nunit.framework"
-                    AssemblyName = "nunit.framework"
-                    HintPath = "..\..\..\..\..\..\dotnet\NUnit2\bin\nunit.framework.dll"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ProxyGeneratorTestCase.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{EF89321E-FB2A-41B6-85B3-794D50A55CF1}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "Apache.Avalon.DynamicProxy.Test"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "Apache.Avalon.DynamicProxy.Test"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "..\..\bin\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+                <Reference
+                    Name = "DProxy"
+                    Project = "{70EE6AF2-1F6D-4CC5-A1B2-C3182F035F67}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "nunit.framework"
+                    AssemblyName = "nunit.framework"
+                    HintPath = "..\..\..\..\..\..\..\..\..\dotnet\NUnit2\bin\nunit.framework.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IMyInterface.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IMySecondInterface.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IServiceStatus.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MyInterfaceImpl.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MySecondInterfaceImpl.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ProxyGeneratorTestCase.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ServiceStatusImpl.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/AssemblyInfo.cs	Fri Jun 25 22:01:51 2004
@@ -23,5 +23,5 @@
 [assembly: AssemblyCopyright("Copyright (c) 2004 The Apache Software Foundation")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]		
-[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.0.1")]
 

Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMyInterface.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMyInterface.cs	Fri Jun 25 22:01:51 2004
@@ -0,0 +1,42 @@
+// Copyright 2004 The Apache Software Foundation
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+	using System;
+
+	/// <summary>
+	/// Summary description for IMyInterface.
+	/// </summary>
+	public interface IMyInterface
+	{
+		String Name
+		{
+			get;
+			set;
+		}
+
+		bool Started
+		{
+			get;
+			set;
+		}
+
+		// void Calc(int x, int y, out int result);
+
+		int Calc(int x, int y);
+
+		int Calc(int x, int y, int z, Single k);
+	}
+}

Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMySecondInterface.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IMySecondInterface.cs	Fri Jun 25 22:01:51 2004
@@ -0,0 +1,30 @@
+// Copyright 2004 The Apache Software Foundation
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+	using System;
+
+	/// <summary>
+	/// Summary description for IMySecondInterface.
+	/// </summary>
+	public interface IMySecondInterface : IMyInterface
+	{
+		String Address
+		{
+			get;
+			set;
+		}
+	}
+}

Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IServiceStatus.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/IServiceStatus.cs	Fri Jun 25 22:01:51 2004
@@ -0,0 +1,45 @@
+// Copyright 2004 The Apache Software Foundation
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+	using System;
+
+	/// <summary>
+	/// Simple enum declaration
+	/// </summary>
+	public enum State
+	{
+		Valid, 
+		Invalid
+	}
+
+	/// <summary>
+	/// Summary description for IServiceStatus.
+	/// </summary>
+	public interface IServiceStatus
+	{
+		int Requests
+		{
+			get;
+		}
+
+		State ActualState
+		{
+			get;
+		}
+
+		void ChangeState(State state);
+	}
+}

Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MyInterfaceImpl.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MyInterfaceImpl.cs	Fri Jun 25 22:01:51 2004
@@ -0,0 +1,69 @@
+// Copyright 2004 The Apache Software Foundation
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+	using System;
+
+	/// <summary>
+	/// Summary description for MyInterfaceImpl.
+	/// </summary>
+	public class MyInterfaceImpl : IMyInterface
+	{
+		private String m_name;
+		private bool m_started;
+
+		public MyInterfaceImpl()
+		{
+		}
+
+		#region IMyInterface Members
+
+		public String Name
+		{
+			get
+			{
+				return m_name;
+			}
+			set
+			{
+				m_name = value;
+			}
+		}
+
+		public bool Started
+		{
+			get
+			{
+				return m_started;
+			}
+			set
+			{
+				m_started = value;
+			}
+		}
+
+		public int Calc(int x, int y)
+		{
+			return x + y;
+		}
+
+		public int Calc(int x, int y, int z, Single k)
+		{
+			return x + y + z + (int)k;
+		}
+
+		#endregion
+	}
+}

Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MySecondInterfaceImpl.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/MySecondInterfaceImpl.cs	Fri Jun 25 22:01:51 2004
@@ -0,0 +1,46 @@
+// Copyright 2004 The Apache Software Foundation
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+	using System;
+
+	/// <summary>
+	/// Summary description for MySecondInterfaceImpl.
+	/// </summary>
+	public class MySecondInterfaceImpl : MyInterfaceImpl, IMySecondInterface
+	{
+		private String m_address;
+
+		public MySecondInterfaceImpl()
+		{
+		}
+
+		#region IMySecondInterface Members
+
+		public String Address
+		{
+			get
+			{
+				return m_address;
+			}
+			set
+			{
+				m_address = value;
+			}
+		}
+
+		#endregion
+	}
+}

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs	Fri Jun 25 22:01:51 2004
@@ -25,263 +25,79 @@
 	/// Summary description for ProxyGeneratorTestCase.
 	/// </summary>
 	[TestFixture]
-	public class ProxyGeneratorTestCase : Assertion, IInvocationHandler, IMyInterface, IMySecondInterface, IServiceStatus
+	public class ProxyGeneratorTestCase : Assertion
 	{
-		protected String m_nameProperty;
-		protected String m_addressProperty;
-		protected State m_state = State.Invalid;
-		protected bool m_started;
-
 		[Test]
-		public void TestSimpleCase()
+		public void TestGenerationSimpleInterface()
 		{
-			object proxy = ProxyGenerator.CreateProxy( new Type[] { typeof(IMyInterface) }, this );
+			object proxy = ProxyGenerator.CreateProxy( 
+				typeof(IMyInterface), new StandardInvocationHandler( new MyInterfaceImpl() ) );
+			
 			AssertNotNull( proxy );
 			Assert( typeof(IMyInterface).IsAssignableFrom( proxy.GetType() ) );
 
 			IMyInterface inter = (IMyInterface) proxy;
-			inter.Calc(1, "ola");
+
+			AssertEquals( 45, inter.Calc( 20, 25 ) );
+
 			inter.Name = "opa";
 			AssertEquals( "opa", inter.Name );
+
 			inter.Started = true;
 			AssertEquals( true, inter.Started );
-			AssertEquals( 45, inter.Calc( 20, 25 ) );
 		}
 
 		[Test]
-		public void TestMoreComplexCase()
+		public void TestGenerationWithInterfaceHeritage()
 		{
-			object proxy = ProxyGenerator.CreateProxy( new Type[] { typeof(IMySecondInterface) }, this );
+			object proxy = ProxyGenerator.CreateProxy( 
+				typeof(IMySecondInterface), new StandardInvocationHandler( new MySecondInterfaceImpl() ) );
+
 			AssertNotNull( proxy );
 			Assert( typeof(IMyInterface).IsAssignableFrom( proxy.GetType() ) );
 			Assert( typeof(IMySecondInterface).IsAssignableFrom( proxy.GetType() ) );
 
 			IMySecondInterface inter = (IMySecondInterface) proxy;
-			inter.Calc(1, "ola");
-			inter.Name = "opa";
-			AssertEquals( "opa", inter.Name );
+			inter.Calc(1, 1);
+
+			inter.Name = "hammett";
+			AssertEquals( "hammett", inter.Name );
+
 			inter.Address = "pereira leite, 44";
 			AssertEquals( "pereira leite, 44", inter.Address );
+			
 			AssertEquals( 45, inter.Calc( 20, 25 ) );
 		}
 
 		[Test]
-		public void TestEnumCase()
+		public void TestEnumProperties()
 		{
-			m_state = State.Invalid;
+			ServiceStatusImpl service = new ServiceStatusImpl();
 
-			object proxy = ProxyGenerator.CreateProxy( new Type[] { typeof(IServiceStatus) }, this );
+			object proxy = ProxyGenerator.CreateProxy( 
+				typeof(IServiceStatus), new StandardInvocationHandler( service ) );
+			
 			AssertNotNull( proxy );
 			Assert( typeof(IServiceStatus).IsAssignableFrom( proxy.GetType() ) );
 
 			IServiceStatus inter = (IServiceStatus) proxy;
 			AssertEquals( State.Invalid, inter.ActualState );
+			
 			inter.ChangeState( State.Valid );
 			AssertEquals( State.Valid, inter.ActualState );
 		}
 
-		#region IInvocationHandler Members
-
-		public object Invoke(object obj, MethodBase method, params object[] arguments)
-		{
-			Type[] parameters = new Type[arguments.Length];
-			
-			for(int i=0; i < arguments.Length; i++ )
-			{
-				parameters[i] = arguments[i].GetType();
-			}
-
-			MethodInfo ourMethod = this.GetType().GetMethod( method.Name, parameters );
-
-			AssertNotNull( ourMethod );
-			
-			return ourMethod.Invoke( this, arguments );
-		}
-
-		#endregion
-
-		#region IMyInterface Members
-
-		public String Name
-		{
-			get
-			{
-				return m_nameProperty;
-			}
-			set
-			{
-				m_nameProperty = value;
-			}
-		}
-
-		public bool Started
-		{
-			get
-			{
-				return m_started;
-			}
-			set
-			{
-				m_started = value;
-			}
-		}
-
-		public void Calc(int x, String y)
-		{
-		}
-
-		public void Calc(int x, String y, Single ip)
-		{
-		}
-
-		public int Calc(int x, int y)
-		{
-			return x + y;
-		}
-
-		public int Calc(int x, int y, int z, Single h)
-		{
-			return x + y + z + (int)h;
-		}
-
-		#endregion
-
-		#region IMySecondInterface Members
-
-		public String Address
-		{
-			get
-			{
-				return m_addressProperty;
-			}
-			set
-			{
-				m_addressProperty = value;
-			}
-		}
-
-		#endregion
-
-		#region IServiceStatus Members
-
-		public int Requests
-		{
-			get
-			{
-				return 32;
-			}
-		}
-
-		public Apache.Avalon.DynamicProxy.Test.State ActualState
-		{
-			get
-			{
-				return m_state ;
-			}
-		}
-
-		public void ChangeState(Apache.Avalon.DynamicProxy.Test.State state)
-		{
-			m_state = state;
-		}
-
-		#endregion
-	}
-	
-	/// <summary>
-	/// 
-	/// </summary>
-	public enum State
-	{
-		Valid, 
-		Invalid
-	}
-
-	/// <summary>
-	/// 
-	/// </summary>
-	public interface IMyInterface
-	{
-		String Name
-		{
-			get;
-			set;
-		}
-
-		bool Started
+		public class MyInterfaceProxy : IInvocationHandler
 		{
-			get;
-			set;
+			#region IInvocationHandler Members
+
+			public object Invoke(object proxy, MethodInfo method, params object[] arguments)
+			{
+				return null;
+			}
+
+			#endregion
 		}
-
-		void Calc(int x, String y);
-
-		void Calc(int x, String y, Single ip);
-
-		int Calc(int x, int y);
-
-		int Calc(int x, int y, int z, Single h);
-	}
-
-	/// <summary>
-	/// 
-	/// </summary>
-	public interface IMySecondInterface : IMyInterface
-	{
-		String Address
-		{
-			get;
-			set;
-		}
-	}
-
-	public interface IServiceStatus
-	{
-		int Requests
-		{
-			get;
-		}
-
-		State ActualState
-		{
-			get;
-		}
-
-		void ChangeState(State state);
-	}
-
-	public class MyTest : IServiceStatus
-	{
-		IInvocationHandler handler = null;
-
-		#region IServiceStatus Members
-
-		public int Requests
-		{
-			get
-			{
-				MethodBase method = MethodBase.GetCurrentMethod();
-				return (int) handler.Invoke( this, method );
-			}
-		}
-
-		public Apache.Avalon.DynamicProxy.Test.State ActualState
-		{
-			get
-			{
-				MethodBase method = MethodBase.GetCurrentMethod();
-				return (State) handler.Invoke( this, method );
-			}
-		}
-
-		public void ChangeState(Apache.Avalon.DynamicProxy.Test.State state)
-		{
-			MethodBase method = MethodBase.GetCurrentMethod();
-			handler.Invoke( this, method, state );
-		}
-
-		#endregion
-
 	}
 }
 

Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ServiceStatusImpl.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ServiceStatusImpl.cs	Fri Jun 25 22:01:51 2004
@@ -0,0 +1,55 @@
+// Copyright 2004 The Apache Software Foundation
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Apache.Avalon.DynamicProxy.Test
+{
+	using System;
+
+	/// <summary>
+	/// Summary description for ServiceStatusImpl.
+	/// </summary>
+	public class ServiceStatusImpl : IServiceStatus
+	{
+		private Apache.Avalon.DynamicProxy.Test.State m_state = Apache.Avalon.DynamicProxy.Test.State.Invalid;
+
+		public ServiceStatusImpl()
+		{
+		}
+
+		#region IServiceStatus Members
+
+		public int Requests
+		{
+			get
+			{
+				return 10;
+			}
+		}
+
+		public Apache.Avalon.DynamicProxy.Test.State ActualState
+		{
+			get
+			{
+				return m_state;
+			}
+		}
+
+		public void ChangeState(Apache.Avalon.DynamicProxy.Test.State state)
+		{
+			m_state = state;
+		}
+
+		#endregion
+	}
+}

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/IInvocationHandler.cs	Fri Jun 25 22:01:51 2004
@@ -27,9 +27,9 @@
 		/// Implementation should invoke the method on the real object.
 		/// </summary>
 		/// <param name="proxy">proxy instance</param>
-		/// <param name="method"><see cref="System.Reflection.MethodBase"/> being invoked.</param>
+		/// <param name="method"><see cref="System.Reflection.MethodInfo"/> being invoked.</param>
 		/// <param name="arguments">Arguments of method - if any</param>
 		/// <returns>Should return the result of method invocation</returns>
-		object Invoke(object proxy, MethodBase method, params object[] arguments);
+		object Invoke(object proxy, MethodInfo method, params object[] arguments);
 	}
 }

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs	(original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/ProxyGenerator.cs	Fri Jun 25 22:01:51 2004
@@ -28,6 +28,10 @@
 	/// implementing the specified interfaces. The class implementation will 
 	/// only call the internal <see cref="IInvocationHandler"/> instance.
 	/// </remarks>
+	/// <remarks>
+	/// This proxy implementation currently doesn't not supports ref and out arguments 
+	/// in methods.
+	/// </remarks>
 	/// <example>
 	/// <code>
 	/// MyInvocationHandler handler = ...
@@ -48,6 +52,18 @@
 		/// Generates a proxy implementing all the specified interfaces and
 		/// redirecting method invocations to the specifed handler.
 		/// </summary>
+		/// <param name="theInterface">Interface to be implemented</param>
+		/// <param name="handler">instance of <see cref="IInvocationHandler"/></param>
+		/// <returns>Proxy instance</returns>
+		public static object CreateProxy(Type theInterface, IInvocationHandler handler)
+		{
+			return CreateProxy(new Type[] { theInterface }, handler );
+		}
+
+		/// <summary>
+		/// Generates a proxy implementing all the specified interfaces and
+		/// redirecting method invocations to the specifed handler.
+		/// </summary>
 		/// <param name="interfaces">Array of interfaces to be implemented</param>
 		/// <param name="handler">instance of <see cref="IInvocationHandler"/></param>
 		/// <returns>Proxy instance</returns>
@@ -246,7 +262,7 @@
 				}
 			}
 
-			WriteILForMethod( methodBuilder, parameters, handlerField );
+			WriteILForMethod( method, methodBuilder, parameters, handlerField );
 		}
 
 		/// <summary>
@@ -267,7 +283,7 @@
 		/// <param name="typeBuilder"><see cref="TypeBuilder"/> being constructed.</param>
 		/// <param name="parameters"></param>
 		/// <param name="handlerField"></param>
-		private static void WriteILForMethod( MethodBuilder builder, 
+		private static void WriteILForMethod( MethodInfo method, MethodBuilder builder, 
 			System.Type[] parameters, FieldBuilder handlerField )
 		{
 			int arrayPositionInStack = 1;
@@ -284,11 +300,12 @@
 
 			ilGenerator.DeclareLocal( typeof(object[]) );
 
-			ilGenerator.Emit(OpCodes.Call, typeof(MethodBase).GetMethod("GetCurrentMethod") );
+			ilGenerator.Emit(OpCodes.Ldtoken, method);
+			ilGenerator.Emit(OpCodes.Call, typeof(MethodBase).GetMethod("GetMethodFromHandle"));
 
 			ilGenerator.Emit(OpCodes.Stloc_0);
 			ilGenerator.Emit(OpCodes.Ldarg_0);
-			ilGenerator.Emit(OpCodes.Ldfld, handlerField );
+			ilGenerator.Emit(OpCodes.Ldfld, handlerField);
 			ilGenerator.Emit(OpCodes.Ldarg_0);
 			ilGenerator.Emit(OpCodes.Ldloc_0);
 			ilGenerator.Emit(OpCodes.Ldc_I4, parameters.Length);
@@ -339,7 +356,6 @@
 			{
 				ilGenerator.Emit(OpCodes.Pop);
 			}
-
 
 			ilGenerator.Emit(OpCodes.Ret);
 		}

Added: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/StandardInvocationHandler.cs
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/StandardInvocationHandler.cs	Fri Jun 25 22:01:51 2004
@@ -0,0 +1,67 @@
+// Copyright 2004 The Apache Software Foundation
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Apache.Avalon.DynamicProxy
+{
+	using System;
+
+	/// <summary>
+	/// Summary description for StandardInvocationHandler.
+	/// </summary>
+	public class StandardInvocationHandler : IInvocationHandler
+	{
+		private object m_target;
+
+		public StandardInvocationHandler(object target)
+		{
+			if (target == null)
+			{
+				throw new ArgumentNullException("target");
+			}
+
+			m_target = target;
+		}
+
+		protected virtual void PreInvoke(object proxy, System.Reflection.MethodInfo method, params object[] arguments)
+		{
+		}
+
+		protected virtual void PostInvoke(object proxy, System.Reflection.MethodInfo method, ref object returnValue, params object[] arguments)
+		{
+		}
+
+		#region IInvocationHandler Members
+
+		public virtual object Invoke(object proxy, System.Reflection.MethodInfo method, params object[] arguments)
+		{
+			PreInvoke(proxy, method, arguments);
+
+			object returnValue = method.Invoke( Target, arguments );
+
+			PostInvoke(proxy, method, ref returnValue, arguments);
+			
+			return returnValue;
+		}
+
+		#endregion
+
+		public object Target
+		{
+			get
+			{
+				return m_target;
+			}
+		}
+	}
+}

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org