1
votes

I'm generating classes from an Open API specification and need to create a constructor that accepts a parameter and sets it to a field. How do I do that with Roslyn?

1

1 Answers

0
votes

I ended up using this code to create a constructor that accepts a parameter and sets it to a field:

SyntaxFactory.ConstructorDeclaration("MyClass")
    .AddParameterListParameters(
        SyntaxFactory.Parameter(SyntaxFactory.Identifier("myParameter"))
            .WithType(SyntaxFactory.ParseTypeName("string")))
    .WithBody(SyntaxFactory.Block(SyntaxFactory.ParseStatement($"_myField = myParameter;")))
    .AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword));

The generated constructor for this code is:

public MyClass(string myParameter)
{
     _myField = myParameter;
}