PartialMock throws BadImageFormatException

70 views
Skip to first unread message

Kenneth Xu

unread,
Jun 27, 2009, 1:22:56 AM6/27/09
to Rhino...@googlegroups.com
Hi,

Here is the test code to reproduce it.
public abstract class MyClass
{
public virtual void Foo<T>(List<T>[] action) { }

/* ... */
}

[TestFixture] public class MyTest
{
[Test] public void MyTestCase()
{
var mockery = new MockRepository();
var mock = mockery.PartialMock<MyClass>();
mockery.ReplayAll();
mock.Foo<string>(null);
}
}

Am I doing anything wrong here or this is a bug? from Castle dynamic proxy?

Thanks,
Kenneth

Tim Barcz

unread,
Jun 27, 2009, 7:53:54 AM6/27/09
to Rhino...@googlegroups.com
Though I don't have a fix for you the problem comes in with DP and the "List<string>[] action" param.  I don't know all the details but at one time (and maybe still exists) there was some goofiness around DP and generics.  Playing with your code I found the following (draw your own conclusions)

The test passes when:

  • I get ride of the array as a param - public virtual void Foo<T>(List<T> action) { }
  • I make the method NOT generic - public virtual void Foo(IList<string> action) { }
It seems to be an issue with DP and generics, whether an array of lists (of type T) or making Foo a generic method.

I'll enlist some DP experts who can hopefully help.

Tim
--
Tim Barcz
ASPInsider
http://timbarcz.devlicio.us
http://www.twitter.com/timbarcz

Kenneth Xu

unread,
Jun 27, 2009, 9:36:17 AM6/27/09
to Rhino...@googlegroups.com
Hi Tim,

Thanks for confirming this. What's what I guessed by looking at the
exception stacktrace. The code I posted was feigned. The real SUT is a
concurrent API for CLR2.0 under development. You can find the source
here: https://fisheye.springsource.org/browse/se-threading-net/trunk/src/Spring/Spring.Threading/Threading/Execution/AbstractExecutorService.cs?r=84#l471

I guess I'll need to write my own Fake for time being to complete the test.

Thanks,
Kenneth

Tuna Toksoz

unread,
Jun 27, 2009, 9:38:22 AM6/27/09
to Rhino...@googlegroups.com
After updating Castle dlls on my local copy, below is what i get.



MyTestCase : Failed

*** Failures ***
Exception
System.MissingMethodException: Can't find a constructor with matching arguments ---> System.MissingMethodException: Constructor on type 'MyClassProxy64aace5742f44fb6b83beef215414c3b' not found.
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, Object[] args)
   at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors)
   at Rhino.Mocks.MockRepository.MockClass(CreateMockState mockStateFactory, Type type, Type[] extras, Object[] argumentsForConstructor) in D:\OpenSourceProjects\RhinoTools\mocks\Rhino.Mocks\MockRepository.cs:line 780
   --- End of inner exception stack trace ---
   at Rhino.Mocks.MockRepository.MockClass(CreateMockState mockStateFactory, Type type, Type[] extras, Object[] argumentsForConstructor) in D:\OpenSourceProjects\RhinoTools\mocks\Rhino.Mocks\MockRepository.cs:line 786
   at Rhino.Mocks.MockRepository.CreateMockObject(Type type, CreateMockState factory, Type[] extras, Object[] argumentsForConstructor) in D:\OpenSourceProjects\RhinoTools\mocks\Rhino.Mocks\MockRepository.cs:line 882
   at Rhino.Mocks.MockRepository.PartialMultiMock(Type type, Type[] extraTypes, Object[] argumentsForConstructor) in D:\OpenSourceProjects\RhinoTools\mocks\Rhino.Mocks\MockRepository.cs:line 536
   at Rhino.Mocks.MockRepository.PartialMock(Type type, Object[] argumentsForConstructor) in D:\OpenSourceProjects\RhinoTools\mocks\Rhino.Mocks\MockRepository.cs:line 511
   at Rhino.Mocks.MockRepository.PartialMock[T](Object[] argumentsForConstructor) in D:\OpenSourceProjects\RhinoTools\mocks\Rhino.Mocks\MockRepository.cs:line 1275
   at Rhino.Mocks.Tests.MyTest.MyTestCase() in D:\OpenSourceProjects\RhinoTools\mocks\Rhino.Mocks.Tests\MyTest.cs:line 23














Tuna Toksöz
Eternal sunshine of the open source mind.

http://devlicio.us/blogs/tuna_toksoz
http://tunatoksoz.com
http://twitter.com/tehlike

Kenneth Xu

unread,
Jun 27, 2009, 11:23:32 AM6/27/09
to Rhino...@googlegroups.com
Hi Tuna,

This seems to be worse. When I ran the test, RhinoMocks was able to
create the proxy object. It choked on the method call. With updated
DP, you cannot even instantiate it now.

Thanks for looking into this and trying on the latest DP. I appreciate it.

Cheers,
Kenneth

Krzysztof Koźmic

unread,
Jun 27, 2009, 10:22:07 AM6/27/09
to Rhino.Mocks
Tuna,

The cause of your error may be that there was a slight change that
fixed handling constructor parameters of some cases with class proxy.
Seems that RM relies on the buggy behavior, hence the error. I'm
reinstalling my VS and SDKs so I can't confirm, but it's very likely
that's the case.
> http://devlicio.us/blogs/tuna_toksozhttp://tunatoksoz.comhttp://twitter.com/tehlike
>
> On Sat, Jun 27, 2009 at 2:53 PM, Tim Barcz <timba...@gmail.com> wrote:
> > Though I don't have a fix for you the problem comes in with DP and the
> > "List<string>[] action" param.  I don't know all the details but at one time
> > (and maybe still exists) there was some goofiness around DP and generics.
> > Playing with your code I found the following (draw your own conclusions)
>
> > The test passes when:
>
> >    - I get ride of the array as a param - public virtual void
> >    Foo<T>(List<T> action) { }
> >    - I make the method NOT generic - public virtual void Foo(IList<string>
> >    action) { }
>
> > It seems to be an issue with DP and generics, whether an array of lists (of
> > type T) or making Foo a generic method.
>
> > I'll enlist some DP experts who can hopefully help.
>
> > Tim
>

Tim Barcz

unread,
Jun 27, 2009, 2:25:01 PM6/27/09
to Rhino...@googlegroups.com
Krystof is looking into this as well
--
Sent from my mobile device

Tim Barcz

unread,
Jun 27, 2009, 2:58:17 PM6/27/09
to Rhino...@googlegroups.com
Oh god I butchered your name ... Sorry K
--
Sent from my mobile device

Tuna Toksoz

unread,
Jun 27, 2009, 3:31:13 PM6/27/09
to Rhino...@googlegroups.com
Don't worry, Krzysztof Kozmic is going to revert a recent change that causes this, then we'll see what's happening.

Tim Barcz

unread,
Jun 27, 2009, 6:54:52 PM6/27/09
to Rhino...@googlegroups.com
Tuna & Kyzysztof,

Thank you both for jumping right on this.  Often people say they worry about OSS because of it's lack of commercial support.  Today was an example that blows that theory out of the water.  Two open source projects, RhinoMocks and Castle came together with three committers to help a "customer" of our respective frameworks.

Thank you both for you help and diligence to your projects, it's a pleasure working with you guys,

Tim

Kenneth Xu

unread,
Jun 27, 2009, 10:01:57 PM6/27/09
to Rhino...@googlegroups.com
And the "customer" is also a committer of another open source project :)

Thank you all!

Cheers,
Kenneth

Tim Barcz

unread,
Jun 28, 2009, 9:06:03 AM6/28/09
to Rhino...@googlegroups.com
Which project is that?

Tim

Kenneth Xu

unread,
Jun 28, 2009, 11:27:05 AM6/28/09
to Rhino...@googlegroups.com
Spring.Threading http://www.springsource.org/extensions/se-threading-net

- A concurrent API for .Net CLR 2.0
- Initially ported from Java's concurrent API but added many .Net
features. It offers more then .Net 4.0 Task Parallel Library does.
- In future, provide same functionality of .Net 4.0 Task Parallel
Library to CLR 2.0

Kenneth

Krzysztof Koźmic

unread,
Jun 30, 2009, 2:29:36 PM6/30/09
to Rhino.Mocks
Kenneth:

I fixed the issue we had in Castle, please get the latest binaries
http://www.castleproject.org:8090/viewLog.html?buildId=383&tab=artifacts&buildTypeId=bt6
and see if it fixed the issue for you. Unfortunatelly my PC went nuts
and I'm unable to compile Rhino and see for myself :/

On Jun 28, 5:27 pm, Kenneth Xu <kenne...@gmail.com> wrote:
> Spring.Threadinghttp://www.springsource.org/extensions/se-threading-net
>
> - A concurrent API for .Net CLR 2.0
> - Initially ported from Java's concurrent API but added many .Net
> features. It offers more then .Net 4.0 Task Parallel Library does.
> - In future, provide same functionality of .Net 4.0 Task Parallel
> Library to CLR 2.0
>
> Kenneth
>
> On Sun, Jun 28, 2009 at 9:06 AM, Tim Barcz<timba...@gmail.com> wrote:
> > Which project is that?
>
> > Tim
>
> > On Sat, Jun 27, 2009 at 9:01 PM, Kenneth Xu <kenne...@gmail.com> wrote:
>
> >> And the "customer" is also a committer of another open source project :)
>
> >> Thank you all!
>
> >> Cheers,
> >> Kenneth
>
> >> On Sat, Jun 27, 2009 at 6:54 PM, Tim Barcz<timba...@gmail.com> wrote:
> >> > Tuna & Kyzysztof,
>
> >> > Thank you both for jumping right on this.  Often people say they worry
> >> > about
> >> > OSS because of it's lack of commercial support.  Today was an example
> >> > that
> >> > blows that theory out of the water.  Two open source projects,
> >> > RhinoMocks
> >> > and Castle came together with three committers to help a "customer" of
> >> > our
> >> > respective frameworks.
>
> >> > Thank you both for you help and diligence to your projects, it's a
> >> > pleasure
> >> > working with you guys,
>
> >> > Tim
>
> >> > On Sat, Jun 27, 2009 at 2:31 PM, Tuna Toksoz <tehl...@gmail.com> wrote:
>
> >> >> Don't worry, Krzysztof Kozmic is going to revert a recent change that
> >> >> causes this, then we'll see what's happening.
>
> >> >> Tuna Toksöz
> >> >> Eternal sunshine of the open source mind.
>
> >> >>http://devlicio.us/blogs/tuna_toksoz
> >> >>http://tunatoksoz.com
> >> >>http://twitter.com/tehlike
>

Kenneth Xu

unread,
Jun 30, 2009, 5:40:33 PM6/30/09
to Rhino...@googlegroups.com
Thanks Krzysztof. I'll compile Rhino myself when I get home tonight after work.

Will let you know.

2009/6/30 Krzysztof Koźmic <krzyszto...@gmail.com>:

Kenneth Xu

unread,
Jun 30, 2009, 5:54:43 PM6/30/09
to Rhino...@googlegroups.com
Hi Krzysztof,

I got connection timeout when downloading. Any idea?

Thanks,
Kenneth

Tuna Toksoz

unread,
Jun 30, 2009, 7:15:35 PM6/30/09
to Rhino...@googlegroups.com
now I'm back home, and i tried trunk of DP against trunk of RM.

and

your test is

passing!!!!

There are 2 failing tests,Tim & Krzysztof, the types of the some of the exceptions that were previously thrown are now changed.

Expected exception of type System.MissingMethodException, got System.ArgumentException (Can not instantiate proxy of class: Rhino.Mocks.Tests.MockingClassesTests+OverLoadedCtor.Could not find a constructor that would match given arguments:System.String

I believe ArgumentException is better as user provide constructor arguments and the constructor is there if argument is correct.
So this would require a little "test" change in RM.

Kenneth Xu

unread,
Jun 30, 2009, 8:10:42 PM6/30/09
to Rhino...@googlegroups.com
Excellent!
Tuna, if it is easy, would you please make the download link work? I know I can check out trunk and build so if it is difficult then let me know and I'll build myself.
Cheers,
Kenneth

Sent from my Verizon Wireless BlackBerry


From: Tuna Toksoz
Date: Wed, 1 Jul 2009 02:15:35 +0300
To: <Rhino...@googlegroups.com>
Subject: [RhinoMocks] Re: PartialMock throws BadImageFormatException

Kenneth Xu

unread,
Jun 30, 2009, 8:13:56 PM6/30/09
to Rhino...@googlegroups.com
Tuna, Forget last email, I'm now able to access the site. Thanks!

Kenneth Xu

unread,
Jul 1, 2009, 12:28:19 PM7/1/09
to Rhino...@googlegroups.com
Tuna and Krzysztof,

Thanks for the quick turn around. While the change did fix the
original issue. It failed again with a more complex method signature:

public virtual void
GenericMethodWithGenericOfGenericArgument<T>(IEnumerable<IComparer<T>>
compararers) { }

Attached patch adds two test cases to the PartailMockTest.

Tim, the patch is applicable to the latest trunk.

Cheers,
Kenneth

Cheers,
Kenneth
PartialMockTests.patch

Krzysztof Koźmic

unread,
Jul 2, 2009, 2:24:22 PM7/2/09
to Rhino.Mocks
OK, I'm on it.


On Jul 1, 6:28 pm, Kenneth Xu <kenne...@gmail.com> wrote:
> Tuna and Krzysztof,
>
> Thanks for the quick turn around. While the change did fix the
> original issue. It failed again with a more complex method signature:
>
> public virtual void
> GenericMethodWithGenericOfGenericArgument<T>(IEnumerable<IComparer<T>>
> compararers) { }
>
> Attached patch adds two test cases to the PartailMockTest.
>
> Tim, the patch is applicable to the latest trunk.
>
> Cheers,
> Kenneth
>
> Cheers,
> Kenneth
>
> On Tue, Jun 30, 2009 at 8:13 PM, Kenneth Xu<kenne...@gmail.com> wrote:
> > Tuna, Forget last email, I'm now able to access the site. Thanks!
>
> >> On Wed, Jul 1, 2009 at 12:54 AM, Kenneth Xu <kenne...@gmail.com> wrote:
>
> >>> Hi Krzysztof,
>
> >>> I got connection timeout when downloading. Any idea?
>
> >>> Thanks,
> >>> Kenneth
>
> >>> On Tue, Jun 30, 2009 at 5:40 PM, Kenneth Xu<kenne...@gmail.com> wrote:
> >>> > Thanks Krzysztof. I'll compile Rhino myself when I get home tonight
> >>> > after work.
>
> >>> > Will let you know.
>
> >>> > 2009/6/30 Krzysztof Koźmic <krzysztof.koz...@gmail.com>:
>
> >>> >> Kenneth:
>
> >>> >> I fixed the issue we had in Castle, please get the latest binaries
>
> >>> >>http://www.castleproject.org:8090/viewLog.html?buildId=383&tab=artifa...
>  PartialMockTests.patch
> 1KViewDownload

Krzysztof Koźmic

unread,
Jul 2, 2009, 3:57:42 PM7/2/09
to Rhino.Mocks
I've got this working on my machine :)
Let me run all the tests, clean it up a little bit and commit.

In the meanwhile, please find me some more bugs to play with :)

Krzysztof Koźmic

unread,
Jul 2, 2009, 4:16:09 PM7/2/09
to Rhino.Mocks
Fixed in the trunk.

Thanks for reporting this.

Krzysztof

Tuna Toksoz

unread,
Jul 2, 2009, 4:32:51 PM7/2/09
to Rhino...@googlegroups.com
I verify this test passes with new DP bits.
2009/7/2 Krzysztof Koźmic <krzyszto...@gmail.com>

Kenneth Xu

unread,
Jul 3, 2009, 10:07:21 AM7/3/09
to Rhino...@googlegroups.com
Yeap! Fabulous job, Krzysztof and Tuna. Will certainly report if I
find anything else. I guess the concurrent API is really stressing DP
and RM. In the mean time, I do have a feature request. Be able to
intercept the non-virtual interface implementation method. Below is an
example, can castle do something what MyProxy does?

public interface ICommon { void Foo(); }

public class ThirdParty : ICommon {
public void Foo() { Console.WriteLine("From 3rd Party."); }
/* other additional features */
}

public class MyProxy : ThirdParty, ICommon {
void ICommon.Foo() {
Console.WriteLine("From proxy.");
base.Foo();

Tuna Toksoz

unread,
Jul 3, 2009, 10:11:26 AM7/3/09
to Rhino...@googlegroups.com
ProxyWithTarget?
On Fri, Jul 3, 2009 at 5:07 PM, Kenneth Xu <kenn...@gmail.com> wrote:
ThirdParty

Tuna Toksoz

unread,
Jul 3, 2009, 10:11:59 AM7/3/09
to Rhino...@googlegroups.com

Kenneth Xu

unread,
Jul 3, 2009, 10:26:52 AM7/3/09
to Rhino...@googlegroups.com
ProxyWithTarget is composition based instead of inheritance based. Am
I right? If yes, then (proxy is ThirdParty) == false.

The advantage of inheritance based is to handle code like:

void Bar(ICommon common) {
ThirdParty tp = common as ThirdParty;
if (tp!=null) {
// do something optimization with tp that we cannot intercept, that's fine.
}
// do somethings else with common that we can intercept.
}

Cheers,
Kenneth

Tuna Toksoz

unread,
Jul 3, 2009, 10:32:11 AM7/3/09
to Rhino...@googlegroups.com
Oh I believe you can do that, with class proxy + additional interfaces.

Tuna Toksoz

unread,
Jul 3, 2009, 10:36:23 AM7/3/09
to Rhino...@googlegroups.com
Let me check.

Kenneth Xu

unread,
Jul 3, 2009, 10:39:54 AM7/3/09
to Rhino...@googlegroups.com
Cool, Thanks!

On Fri, Jul 3, 2009 at 10:36 AM, Tuna Toksoz<teh...@gmail.com> wrote:
> Let me check.
>

Tuna Toksoz

unread,
Jul 3, 2009, 10:48:23 AM7/3/09
to Rhino...@googlegroups.com
    public class MyClass:IComparable
    {
        public int CompareTo(object obj)
        {
            return 0;
        }
    }
    public class MyInterceptor:IInterceptor
    {
        public void Intercept(IInvocation invocation)
        {
            invocation.ReturnValue = 1;
        }
    }
    [TestFixture]
    public class MyTest : BasePEVerifyTestCase
    {

        [Test]
        public void My_Method()
        {
            var interceptor = new MyInterceptor();
            var proxied = generator.CreateClassProxy(typeof (MyClass), new Type[] {typeof (IComparable)}, interceptor) as IComparable;
            Assert.That(proxied, Is.InstanceOf(typeof (MyClass)));
            var result=proxied.CompareTo(null);
            Assert.That(result,Is.EqualTo(1));
        }
    }

Green!

Tuna Toksoz

unread,
Jul 3, 2009, 10:51:42 AM7/3/09
to Rhino...@googlegroups.com
Err, but it fails for another case...

        [Test]
        public void My_Method()
        {
            var interceptor = new NoopInterceptor();

            var proxied = generator.CreateClassProxy(typeof (MyClass), new Type[] {typeof (IComparable)}, interceptor) as IComparable;
            Assert.That(proxied, Is.InstanceOf(typeof (MyClass)));
            var result=proxied.CompareTo(null);
            Assert.That(result,Is.EqualTo(1));
        }



Tuna Toksoz

unread,
Jul 3, 2009, 11:00:02 AM7/3/09
to Rhino...@googlegroups.com
Check class which implements the interface part

http://kozmic.pl/archive/2009/07/01/castle-dynamic-proxy-tutorial-part-xi-when-one-interface-is.aspx

You'll need to do that manually, until it is changed.

Krzysztof Koźmic

unread,
Jul 3, 2009, 11:04:41 AM7/3/09
to Rhino.Mocks
Kenneth,

Currently you can't do this, but I think it's just an omission (as you
can read in this post
http://kozmic.pl/archive/2009/07/01/castle-dynamic-proxy-tutorial-part-xi-when-one-interface-is.aspx).

Technically however I can see no reason why this could not be done so
please add this to Castle' issue tracker and I think we'll be able to
fix it for v2.2.

Krzysztof

On Jul 3, 4:07 pm, Kenneth Xu <kenne...@gmail.com> wrote:
> Yeap! Fabulous job, Krzysztof and Tuna. Will certainly report if I
> find anything else. I guess the concurrent API is really stressing DP
> and RM. In the mean time, I do have a feature request. Be able to
> intercept the non-virtual interface implementation method. Below is an
> example, can castle do something what MyProxy does?
>
>     public interface ICommon { void Foo(); }
>
>     public class ThirdParty : ICommon {
>         public void Foo() { Console.WriteLine("From 3rd Party."); }
>         /* other additional features */
>     }
>
>     public class MyProxy : ThirdParty, ICommon {
>         void ICommon.Foo() {
>             Console.WriteLine("From proxy.");
>             base.Foo();
>         }
>     }
>
> On Thu, Jul 2, 2009 at 4:32 PM, Tuna Toksoz<tehl...@gmail.com> wrote:
> > I verify this test passes with new DP bits.
>
> > Tuna Toksöz
> > Eternal sunshine of the open source mind.
>
> >http://devlicio.us/blogs/tuna_toksoz
> >http://tunatoksoz.com
> >http://twitter.com/tehlike
>
> > 2009/7/2 Krzysztof Koźmic <krzysztof.koz...@gmail.com>

Kenneth Xu

unread,
Jul 3, 2009, 11:06:19 AM7/3/09
to Rhino...@googlegroups.com
Fantastic!

Kenneth Xu

unread,
Jul 3, 2009, 11:09:15 AM7/3/09
to Rhino...@googlegroups.com
Yeap, it cannot proceed :(

Kenneth Xu

unread,
Jul 3, 2009, 12:39:35 PM7/3/09
to Rhino...@googlegroups.com
Krzysztof,

I have created the issue
http://support.castleproject.org/projects/DYNPROXY/issues/view/DYNPROXY-ISSUE-102
in the tracker.

Looking forward to see it in 2.2.

Thanks again for the fabulous support.

Cheers,
Kenneth

2009/7/3 Krzysztof Koźmic <krzyszto...@gmail.com>:

Artur

unread,
Jul 3, 2009, 1:12:21 PM7/3/09
to Rhino...@googlegroups.com
You are trying to use x86 assembly on your x64 platform (don't you have x64?).
I think that in your main .net project there is a default setting Any CPU.

Change that to x86, then you will be able to run the project as 32bit
application.
Or find other dependent assemblies.

Regards,
Artur

http://www.kodart.com

On Sat, Jun 27, 2009 at 3:53 PM, Tim Barcz<timb...@gmail.com> wrote:
> Though I don't have a fix for you the problem comes in with DP and the
> "List<string>[] action" param.  I don't know all the details but at one time
> (and maybe still exists) there was some goofiness around DP and generics.
> Playing with your code I found the following (draw your own conclusions)
>
> The test passes when:
>
> I get ride of the array as a param - public virtual void Foo<T>(List<T>
> action) { }
> I make the method NOT generic - public virtual void Foo(IList<string>
> action) { }
>
> It seems to be an issue with DP and generics, whether an array of lists (of
> type T) or making Foo a generic method.
>
> I'll enlist some DP experts who can hopefully help.
>
> Tim
>
> On Sat, Jun 27, 2009 at 12:22 AM, Kenneth Xu <kenn...@gmail.com> wrote:
>>
>> Hi,
>>
>> Here is the test code to reproduce it.
>>    public abstract class MyClass
>>    {
>>        public virtual void Foo<T>(List<T>[] action) { }
>>
>>        /* ... */
>>    }
>>
>>    [TestFixture] public class MyTest
>>    {
>>        [Test] public void MyTestCase()
>>        {
>>            var mockery = new MockRepository();
>>            var mock = mockery.PartialMock<MyClass>();
>>            mockery.ReplayAll();
>>            mock.Foo<string>(null);
>>        }
>>    }
>>
>> Am I doing anything wrong here or this is a bug? from Castle dynamic
>> proxy?
>>
>> Thanks,
>> Kenneth
>>
>>
>
>
>
> --
> Tim Barcz
> ASPInsider
> http://timbarcz.devlicio.us
> http://www.twitter.com/timbarcz
>
>
> >
>



--
Regards,
Artur

Krzysztof Koźmic

unread,
Jul 4, 2009, 3:18:54 AM7/4/09
to Rhino.Mocks
I added fix for composite generic return type, it's testing, should be
in the daily builds within several minutes

Kenneth Xu

unread,
Jul 4, 2009, 9:32:41 AM7/4/09
to Rhino...@googlegroups.com
Yeap, that fixed it!

2009/7/4 Krzysztof Koźmic <krzyszto...@gmail.com>:

Tim Barcz

unread,
Jul 4, 2009, 9:35:08 AM7/4/09
to Rhino...@googlegroups.com
I have a new hero - XStoff!

Jonathon Rossi

unread,
Jul 4, 2009, 9:42:06 AM7/4/09
to Rhino...@googlegroups.com
I agree. He has been doing some nice work. It is much appreciated right around.
--
Jono

Krzysztof Koźmic

unread,
Jul 4, 2009, 11:47:35 AM7/4/09
to Rhino.Mocks
Tim, please

Xtoff, Krzysztof, even Kryz if you absolutely must, but *not* XStoff

Thanks

On Jul 4, 3:35 pm, Tim Barcz <timba...@gmail.com> wrote:
> I have a new hero - XStoff!
>
> On Sat, Jul 4, 2009 at 8:32 AM, Kenneth Xu <kenne...@gmail.com> wrote:
>
> > Yeap, that fixed it!
>
> > 2009/7/4 Krzysztof Koźmic <krzysztof.koz...@gmail.com>:

Tim Barcz

unread,
Jul 4, 2009, 11:51:57 AM7/4/09
to Rhino...@googlegroups.com
I apologize...my mistake.  If we ever meet I owe you big time.

2009/7/4 Krzysztof Koźmic <krzyszto...@gmail.com>

Kenneth Xu

unread,
Jul 4, 2009, 12:05:20 PM7/4/09
to Rhino...@googlegroups.com
Correction No. 2:
It should be "we" instead of "I".

Tim, I have some fun for you later on :)

Assert.That("fun", Is.EqualsTo("bug and enhancement"));
Assert.That("you", Is.GreaterThanOrEqualTo("committer of RM");

Cheers,
Kenneth

Krzysztof Koźmic

unread,
Jul 12, 2009, 7:06:17 AM7/12/09
to Rhino.Mocks
The issue with interfaces on class is fixed in Castle trunk. Take a
look here to read about limitations (which are a result of how CLR
works, not Dynamic Proxy): http://kozmic.pl/archive/2009/07/12/more-on-proxies-and-additional-interfaces.aspx

Kenneth Xu

unread,
Jul 12, 2009, 5:28:32 PM7/12/09
to Rhino...@googlegroups.com
Another great work done!

> read about limitations (which are a result of how CLR
> works, not Dynamic Proxy): http://kozmic.pl/archive/2009/07/12/more-on-proxies-and-additional-interfaces.aspx

As to the limitation on explicit implementation. I believe there is a
way to overcome. Let me do some research. If I find any, I'll add
comment to your blog post.

Cheers,
Kenneth

Reply all
Reply to author
Forward
0 new messages