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