My hobbyist coding updates and releases as the mysterious "Mr. Tines"

Thursday, 13 December 2007

J# and Ruby.Net — not all is rosy in the garden

Ruby expects modules to be constants (capitalised). Just like .Net namespace naming conventions dictate.

Java, OTOH, uses lower-case package names which map directly to .Net namespaces, which cause Ruby.Net to bork when trying to instantiate classes. In fact, this is a general issue — it affects any .Net module names which are not capitalised, like this C# code

namespace ClassLibrary2.nested
    public class Person
        private String name;
        private int age;

        public Person(String name, int age)
   = name;
            this.age = age;

        public void print()
            Console.WriteLine("Hello " + name + " " + age);

which won't work when invoked by

require 'ClassLibrary2.dll'

name = 'Fred'
age = 42
fred =, age)

But if you change nested to Nested, all is well.

*le sigh* — that means an adapter layer between Java-style names and Ruby/.Net ones. At least that should be doable in Java/J#, even if it makes things more painful than I had hoped.

No comments: