Here's a patch with test case + fix (apply in the tools
\Castle.DynamicProxy2 folder)
Index: Castle.DynamicProxy.Tests/BasicClassProxyTestCase.cs
===================================================================
--- Castle.DynamicProxy.Tests/BasicClassProxyTestCase.cs (revision
3764)
+++ Castle.DynamicProxy.Tests/BasicClassProxyTestCase.cs (working
copy)
@@ -20,6 +20,7 @@
using Castle.DynamicProxy.Generators;
using Castle.DynamicProxy.Tests.BugsReported;
using Castle.DynamicProxy.Tests.Classes;
+ using Castle.DynamicProxy.Tests.GenClasses;
using Castle.DynamicProxy.Tests.Interceptors;
using Castle.DynamicProxy.Tests.InterClasses;
using NUnit.Framework;
@@ -207,6 +208,14 @@
Assert.AreEqual(10, classProxy.X);
}
+ [Test]
+ public void ClassProxyShouldHaveParameterlessConstructor()
+ {
+ object proxy = generator.CreateClassProxy(typeof
(ClassWithDefaultConstructor), new StandardInterceptor());
+ Assert.IsNotNull(Activator.CreateInstance(proxy.GetType()));
+
+ }
+
/// <summary>
/// See http://support.castleproject.org/browse/DYNPROXY-43
/// </summary>
Index: Castle.DynamicProxy.Tests/Castle.DynamicProxy.Tests-
vs2005.csproj
===================================================================
--- Castle.DynamicProxy.Tests/Castle.DynamicProxy.Tests-vs2005.csproj
(revision 3764)
+++ Castle.DynamicProxy.Tests/Castle.DynamicProxy.Tests-vs2005.csproj
(working copy)
@@ -108,6 +108,7 @@
<Compile Include="Classes\ClassWithCharRetType.cs" />
<Compile Include="Classes\ClassWithConstructors.cs" />
<Compile Include="Classes\MySerializableClass.cs" />
+ <Compile Include="GenClasses\ClassWithDefaultConstructor.cs" />
<Compile Include="GenericTestUtility.cs" />
<Compile Include="GenInterfaces\GenInterfaceHierarchy.cs" />
<Compile Include="GenInterfaces\GenExplicitImplementation.cs" />
Index: Castle.DynamicProxy.Tests/GenClasses/
ClassWithDefaultConstructor.cs
===================================================================
--- Castle.DynamicProxy.Tests/GenClasses/
ClassWithDefaultConstructor.cs (revision 0)
+++ Castle.DynamicProxy.Tests/GenClasses/
ClassWithDefaultConstructor.cs (revision 0)
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Castle.DynamicProxy.Tests.GenClasses
+{
+ public class ClassWithDefaultConstructor
+ {
+ private int number;
+
+
+ public int Number
+ {
+ get { return number; }
+ set { number = value; }
+ }
+ }
+}
Index: Castle.DynamicProxy/Generators/BaseProxyGenerator.cs
===================================================================
--- Castle.DynamicProxy/Generators/BaseProxyGenerator.cs (revision
3764)
+++ Castle.DynamicProxy/Generators/BaseProxyGenerator.cs (working
copy)
@@ -564,11 +564,11 @@
{
// Check if the type actually has a default constructor
- ConstructorInfo defaultConstructor =
baseClass.GetConstructor(BindingFlags.Public, null, Type.EmptyTypes,
null);
+ ConstructorInfo defaultConstructor =
baseClass.GetConstructor(BindingFlags.Public | BindingFlags.Instance,
null, Type.EmptyTypes, null);
if (defaultConstructor == null)
{
- defaultConstructor =
baseClass.GetConstructor(BindingFlags.NonPublic, null,
Type.EmptyTypes, null);
+ defaultConstructor =
baseClass.GetConstructor(BindingFlags.NonPublic |
BindingFlags.Instance, null, Type.EmptyTypes, null);
if (defaultConstructor == null || defaultConstructor.IsPrivate)
{
On May 2, 4:21 pm, "Ayende Rahien" <aye...@ayende.com> wrote:
> Please use a zip to post the patch.
>
> > + Assert.IsNotNull(Activator.CreateInstance(
Dumb question, what's the address to send it to?
On May 2, 4:21 pm, "Ayende Rahien" <aye...@ayende.com> wrote:
> Please use a zip to post the patch.
>
> On 5/3/07, chriso < chrisort...@gmail.com> wrote:
>
>
>
> > When creating a class proxy the default no args constructor is not
> > generated because the binding flags passed to Type.GetConstructor are
> > incorrect.
>
> > Here's a patch with test case + fix (apply in the tools
> > \Castle.DynamicProxy2 folder)
>
> > Index: Castle.DynamicProxy.Tests/BasicClassProxyTestCase.cs
> > ===================================================================
> > --- Castle.DynamicProxy.Tests/BasicClassProxyTestCase.cs (revision
> > 3764)
> > +++ Castle.DynamicProxy.Tests /BasicClassProxyTestCase.cs (working