Get/Set Values for Static Fields and Properties

You are browsing legacy Javonet 1.5 (Java<>.NET bridge for Windows) documentation. Use the left side menu or click here to switch to latest Javonet 2.0 documentation. Javonet 2.0 allows you to use any module from JVM, CLR, Netcore, Python, Ruby, Perl, NodeJS on Windows, Linux and MacOs from any application created in Java, Clojure, Groovy, Kotlin, C#, F#, J#, VB.NET, Python, Perl, Ruby, JavaScript, TypeScript, C++ and GoLang

Custom .NET Framework DLL

With Javonet you can easily get or set a value for any static field or property from a class or structure from .NET Framework DLL by calling the "get(fieldOrPropertyName)" or "set(fieldOrPropertyName, newValue)" method on reference to .NET/Java type. Conversely, foreign instance types can be stored in Java variables using the dedicated Java type called NType.

As with the methods, value-typed results are automatically translated into Java types and reference results are returned as NObject\JObject objects.

Assuming we have a custom .NET Framework DLL with the following class inside:

using System;

namespace TestNamespace
{
	public class TestClass
	{
		public TestClass() { }
		~TestClass()
		{
			Console.WriteLine("Displaying object from .NET destructor message");
		}
		public static int MyStaticField { get; set; }
		public int MyInstanceField { get; set; }

		public static string SayHello(string name)
		{
			return "Hello " + name;
		}

		public int MultiplyByTwo(int arg)
		{
			return arg * 2;
		}

		public T MyGenericMethod<T>(T arg1)
		{
			return arg1;
		}
		public K MyGenericMethodWithTwoTypes<T, K>(T arg1)
		{
			return default(K);
		}

		public void MethodWithRefArg(ref int arg)
		{
			arg = arg + 44;
		}

		public string PassTypeArg(Type myType)
		{
			return myType.ToString();
		}

		public string MethodWithEnumArg(SampleEnum value)
		{
			return value.ToString();
		}
	}
}

To set and get static field from this class:

I code in:
// Todo: activate Javonet and add reference to .NET library

// get .NET type
NType sampleType = Javonet.getType("TestNamespace.TestClass");

// set static field
sampleType.set("MyStaticField", 10);

// get static field
Integer response = sampleType.get("MyStaticField");

// write response to console
System.out.println(response);

Standard .NET Framework DLL

To get static field from the standard .NET Framework DLL:

I code in:
// Todo: activate Javonet

// get .NET DateTime class
NType dateTimeClass = Javonet.getType("System.DateTime");

// get datetime field
NObject nowDateObj = dateTimeClass.get("Now");

// invoke .NET method to get string
String response = nowDateObj.invoke("ToString");

// write response to console
System.out.println(response);

See Live Example!