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) { this.name = 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 = ClassLibrary2::nested::Person.new(name, age) fred.print
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:
Post a Comment