NanoByte Code Generation

A thin wrapper around the Roslyn API to simplify generating C# code.

This can be used to implement things like code generators for Swagger/OpenAPI Spec, ORMs, etc. using a type-safe interface rather than simple string templating.

While you can use the Rosyln API directly, its immutable and thread-safe design can make using it somewhat verbose and cumbersome. This library provides a simpler (but also less flexible) wrapper.

Usage

Add a reference to the NanoByte.CodeGeneration NuGet package to your project. It is available for .NET Standard 2.0+.

You can then generate a class like this:

var myClass = new CSharpClass(new CSharpIdentifier("MyNamespace", "MyClass"))
{
    Description = "My class",
    Properties =
    {
        new CSharpProperty(CSharpIdentifier.String, "MyProperty")
        {
            Description = "My property",
            HasSetter = true
        }
    }
};
myClass.WriteToFile("MyClass.cs");

Take a look at the documentation for CSharpClass and CSharpInterface to discover more features.