jni4net : How to pass a Map as parameter to a C# method from Java?

671 Views Asked by At

I'm trying to use jni4net in my Java program to call methods from a C# .dll library.

Bridge.setVerbose(true);
Bridge.init(new File("jni4net.n.w64.v40-0.8.8.0.dll").getAbsoluteFile());

Bridge.LoadAndRegisterAssemblyFrom(new File("BridgeDemoLibrary.j4n.dll"));

System.out.println();

MyGenerator myGenerator = new MyGenerator();
int result = myGenerator.add(2, 4);

It's ok for methods with int or string values as parameters but I also have a C# method which takes a Dictionary<string, int> object as a parameter and I don't know how to create it within my Java code.

Currenlty I've got the following code:

// using generic objects doesn't seem to be supported yet...
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("Java", 1);
map.put("C#", 2);
map.put("Ruby", 3);

myGenerator.generate_id("10", map);

This code doesn't work because the generated generate_id() method expects a system.Object (which is a class from jni4net) as its second parameter.

So How can I convert my HashMap to a system.Object?

Regards :)

0

There are 0 best solutions below