Yesterday I introduced the AsyncApi specification as a way to share message contracts in a language neutral way. Let’s continue today by looking how we can generate a C# messagecontract based on your AsyncAPI specification file.
Here is the example specification file again that I shared yesterday:
To transform this specification file to a data contract, we can use the Async API generator. The generator uses templates to specify what must be generated.
There is a list of official generator templates, unfortunately C# is not part of this list. Thanks to the community a csharp compatible template exists; https://github.com/jonaslagoni/asyncapi-quicktype-template
Let’s try that one!
Install the generator
First install the generator through NPM:
npm install -g @asyncapi/generator
You can optionally pre-install the quicktype template:
npm install -g@lagoni/asyncapi-quicktype-template
Generate C# Message contracts
Now we can generate the C# message contracts:
ag message.yaml @lagoni/asyncapi-quicktype-template -o output --param "quick typeLanguage=csharp"
You can check the full list of available parameters for this template here: https://github.com/quicktype/quicktype/blob/e6cc44fdfcb75c3f3ed3e12f69f15a0c863a1a05/src/quicktype-core/language/CSharp.ts#L115
This will generate 2 message contracts:
Generate documentation
The generator templates are quite versatile. So can you also use it to generate documentation in HTML or Markdown format.
ag message.yaml @asyncapi/html-template -o output
Here is how the generated html output looks like: