[Ironruby-core] Interface methods of internal class not defined in IR

Tomas Matousek Tomas.Matousek at microsoft.com
Mon May 11 02:48:06 EDT 2009

You are right - it should work. We know about this issue. I'll look at fixing it soon, maybe this week.


-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Xerxes Battiwalla
Sent: Sunday, May 10, 2009 10:45 PM
To: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Interface methods of internal class not defined in IR

Hi there,

We are using a .NET library which comprises of several classes marked
internal where each class exposes functionality through an interface.
When attempting to call on these objects in IR, we get an "undefined
method" exception. Is there a way to access the interface members of
the class when it's internal?

I've created the following example to reproduce:

******* In C#:

using System;

namespace HelloWorldApp
    public class HelloFactory
        public IHelloWorld NewWorld()
            return new HelloWorld();

    public interface IHelloWorld
        void SayHello();

    internal class HelloWorld: IHelloWorld // NOTE THE INTERNAL MODIFIER
        public void SayHello()
            throw new NotImplementedException();

******* In Ruby:
require "HelloWorldApp.dll"

class HelloWorldApp::HelloWorld
	def say_hello
		puts "Hello!!"

@hello_factory = HelloWorldApp::HelloFactory.new
@hello_app = @hello_factory.new_world

puts "hello_app should be HelloWorldApp::IHelloWorld but was


In this example, I expect the system to puts "Hello!!", but instead it
throws the "undefined method" exception. If I run IR with the
PrivateBindings option it works, but it seems like a workaround I
shouldn't have to do, because i'm passing the instance from C# to IR
as the interfaced type (my conclusion therefore being it should be
able to access it)

Any help appreciated.

Ironruby-core mailing list
Ironruby-core at rubyforge.org

More information about the Ironruby-core mailing list