Testura/Testura.Code

Ability to generate an outer class

Closed this issue · 3 comments

I have a requirement in my project, need to define an outer class. Is it an exiting feature?

public class CustomerId
{
}
public class CustomerType : BaseStringType
{
}

Do you mean without a namespace or just a regular class? Because you can create your example code with a namespace like this:

var @namespace = new NamespaceBuilder("MyNamespace")
	.With(
		new ClassBuildMember(new ClassBuilder("CustomerId", null)),
		new ClassBuildMember(new ClassBuilder("CustomerType", null)
			.ThatInheritFrom(CustomType.Create("BaseStringType"))))
	.Build();


var codeSaver = new CodeSaver();
var code = codeSaver.SaveCodeAsString(@namespace);

Vill give you:

namespace MyNamespace
{
    public class CustomerId
    {
    }

    public class CustomerType : BaseStringType
    {
    }
}

Or if you want them in their own namespace you can just use the builder directly:

var @class = new ClassBuilder("CustomerId", "MyNamespace").Build();

var codeSaver = new CodeSaver();
var code = codeSaver.SaveCodeAsString(@class);

Will give you:

namespace MyNamespace
{
    public class CustomerId
    {
    }
}

You can also get without namespace but it it's a bit more messy:

var @class = new ClassBuilder("CustomerId", "MyNamespace").BuildWithoutNamespace();

var codeSaver = new CodeSaver();
var code = codeSaver.SaveCodeAsString(SyntaxFactory.CompilationUnit().WithMembers(SingletonList<MemberDeclarationSyntax>(@class)));

But I maybe can add support to skip namespace if that's what you want?

Any other questions? If not I will close this issue later on.

Thanks !!

You may please close this.