This is a basic example where a developer call, from a Java application, the simple class defined in a file named CSharpClass.cs.
Let’s consider the following C# code:
using System;
namespace MASES.CLRTests
{
public class CSharpClass
{
/// <summary>The method <c>HelloWorld</c> return the "Hello World!!" string</summary>
public String HelloWorld()
{
return "Hello World from C#!!";
}
/// <summary>The method <c>Add</c> return the sum of two double</summary>
public double Add(double a, double b)
{
return a + b;
}
/// <summary>The method <c>Add</c> return the sin of a double</summary>
public double Sin(double a)
{
return Math.Sin(a);
}
}
}
Compiling it with the preferred development tools an assembly will be generated.
Create a Java class named CSharpClassUseExample.java with the following content:
import java.io.IOException;
import org.mases.jcobridge.*;
public class CSharpClassUseExample {
public static void main(String[] args) {
try {
try {
try {
JCOBridge.Initialize();
} catch (JCException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
//declare and create JCOBridge instance
JCOBridge bridge;
bridge = JCOBridge.CreateNew();
// adds the path where extarnal assemblies where found
bridge.AddPath("./");
// add REFERENCES to the .dll file
bridge.AddReference("CSharpClass");
// GENERATE Object
JCObject cso = (JCObject) bridge.NewObject("MASES.CLRTests.CSharpClass");
double a = 2;
double b = 3;
double c = Math.PI/2;
//Invoke the C# class methods
String hello = (String) cso.Invoke("HelloWorld");
double result = (double) cso.Invoke("Add",a, b);
double sin = (double) cso.Invoke("Sin", c);
System.out.println(String.format("%s %.0f + %.0f = %.0f and sin(%.8f) = %.8f", hello, a, b, result, c, sin));
} catch (JCException jce) {
jce.printStackTrace();
System.out.println("Exiting");
return;
}
}
}
Save the file in the same folder where is located the assembly generated from C# project and execute the Java class as standard Main-Class.
Executing the code the following output will be generated:
Hello World from C#!! 2 + 3 = 5 and sin(3,14159265) = 1,00000000