C# to JavaScript compiler

# Calling C# from JavaScript

Once your C# code is compiled into JavaScript, you can call it from existing JavaScript code just like any other JavaScript library. h5 generates JavaScript objects and functions that mirror your C# types and members.

# Calling Static Methods

Static methods are exposed directly on the class constructor.

using System;
using H5;

namespace MyProject
{
    public class Utils
    {
        public static void Log(string message)
        {
            Console.WriteLine(message);
        }
    }
}

In JavaScript:

MyProject.Utils.Log("Hello from JavaScript!");

# Creating Instances

You can create instances of your C# classes using the new keyword.

namespace MyProject
{
    public class Person
    {
        public string Name { get; set; }

        public Person(string name)
        {
            Name = name;
        }

        public void SayHello()
        {
            Console.WriteLine("Hello, " + Name);
        }
    }
}

In JavaScript:

var p = new MyProject.Person("Alice");
p.SayHello(); // Output: Hello, Alice

# Passing Callbacks

You can pass JavaScript functions as delegates to C# methods.

namespace MyProject
{
    public class App
    {
        public static void Run(Action<string> callback)
        {
            callback("Success!");
        }
    }
}

In JavaScript:

MyProject.App.Run(function(message) {
    alert(message);
});

# Considerations

  • Namespaces: Ensure you use the fully qualified name of the class (unless you've customized [Namespace] or output settings).
  • Types: JavaScript types (number, string, boolean) map directly to C# primitives. Objects map to object or specific types if structural typing matches.
  • Overloading: h5 supports method overloading. However, calling overloaded methods from JavaScript can be tricky as JavaScript doesn't support overloads natively. h5 generates dispatch logic based on argument types and counts.