[Ironruby-core] Dynamic Binding fails if abstract event not implemented

Xerxes Battiwalla xerxesb at gmail.com
Tue Jun 23 03:34:20 EDT 2009


Actually the AbstractHelloWorld is used as a work-around for
implementing the interface directly in ruby (see
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=772), so
implementing it in C# gives us no benefit.

I did try (in our codebase, i havent tested this particular example)
removing the abstract modifier on SomeEvent in AbstractHelloWorld and
leaving everything else as abstract on the interface, and I get the
same failure for add_OnProgress on IronRuby::System::Object.

-Xerx

On Tue, Jun 23, 2009 at 4:51 PM, Tomas
Matousek<Tomas.Matousek at microsoft.com> wrote:
> Could you derive from AbstractHelloWorld in C# and implement the abstract event and then derive from this derived class in Ruby?
>
> Tomas
>
> -----Original Message-----
> From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Xerxes Battiwalla
> Sent: Monday, June 22, 2009 10:43 PM
> To: ironruby-core at rubyforge.org
> Subject: Re: [Ironruby-core] Dynamic Binding fails if abstract event not implemented
>
> great - thanks for the follow up, Tomas.
>
> Is there a workaround we could use in the meantime? Really keen to get
> Cucumber going ;)
>
> -Xerx
>
> On Tue, Jun 23, 2009 at 2:49 PM, Tomas
> Matousek<Tomas.Matousek at microsoft.com> wrote:
>> Definitely a bug. I've filed it under http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1628.
>>
>> Tomas
>>
>> -----Original Message-----
>> From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Xerxes Battiwalla
>> Sent: Monday, June 22, 2009 9:04 PM
>> To: ironruby-core at rubyforge.org
>> Subject: [Ironruby-core] Dynamic Binding fails if abstract event not implemented
>>
>> Hi - I've just downloaded the latest IR source from GitHub and have a
>> problem with what looks like a regression from v0.4.
>>
>> We have an interface defining an event which is implemented by an
>> abstract class in C#. In Ruby, we create an implementation of the
>> abstract class and call only a subset of methods as we require them.
>> The 0.4 version played nicely and would only do the dynamic binding of
>> methods we required at the time we called them, however the latest
>> version of IR seems to try and bind the event (even though we don't
>> hook up to it) and can't find an implementation in ruby so it throws a
>> TypeLoadException citing the adder for the event does not have an
>> implementation.
>>
>> A reproducible case is pasted below. Hoping someone would be able to
>> shed light on whether this is intentional, and if so what we can do to
>> implement the event in ruby.
>>
>> ***************************
>> using System;
>>
>> namespace HelloWorldApp
>> {
>>    public interface IHelloWorld
>>    {
>>        event EventHandler SomeEvent;
>>    }
>>
>>    public abstract class AbstractHelloWorld : IHelloWorld
>>    {
>>        public abstract event EventHandler SomeEvent;
>>    }
>> }
>>
>> ***************************
>> require "HelloWorldApp.dll"
>>
>> class HelloWorlder < HelloWorldApp::AbstractHelloWorld
>> end
>>
>> @hello_app = HelloWorlder.new #barf
>>
>> ***************************
>> D:\source\dotnet\IronRubyInteropBug>ir ruby_test.rb
>> mscorlib:0:in `_TermCreateClass': Method 'add_SomeEvent' in type
>> 'IronRuby.Classes.AbstractHelloWorld$1' from assembly
>> 'Snippets.scripting, Version=0.0.0.0, Culture=neutral,
>> PublicKeyToken=null' does not have an implementation.
>> (System::TypeLoadException)
>>        from mscorlib:0:in `CreateTypeNoLock'
>>        from mscorlib:0:in `CreateType'
>>        from c:\IronRuby\ndp\fx\src\Core\Microsoft\Scripting\Actions\DynamicMetaObjectBinder.cs:107:in
>> `Bind'
>>        from c:\IronRuby\ndp\fx\src\Core\Microsoft\Scripting\Actions\CallSiteBinder.cs:85:in
>> `BindCore'
>>        from ruby_test.rb:6
>>
>>
>> Any assistance appreciated - cheers!
>>
>> -xerx
>> _______________________________________________
>> Ironruby-core mailing list
>> Ironruby-core at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>> _______________________________________________
>> Ironruby-core mailing list
>> Ironruby-core at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core
>
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org
> http://rubyforge.org/mailman/listinfo/ironruby-core
>


More information about the Ironruby-core mailing list