如何使用.NET编译器平台创建常量声明

6

我正在尝试使用Roslyn或者现在所称的.NET编译器平台来创建一个小型代码生成器,之前我使用过codedom,但那很麻烦,MSDN提供了一些参考,现在Roslyn的文档很少,而且所有文档都集中在代码分析上,而不是代码生成。

所以我的问题很简单:

我怎样才能创建类似于:

private const string MyString = "This is my string";

使用编译器平台类?我找到了一些类似FieldDeclarationSyntax和ExpressionSyntax的东西,但是所有的示例都生成像 Myclass myvariable = new Myclass(); 这样的东西。没有告诉我如何生成简单的字符串类型声明。 有什么线索将会很好。 提前感谢您。

1个回答

9
您可以使用 Roslyn Quoter 工具来轻松地查找如何构建不同的语法片段。在这种情况下,您想要向字段声明中添加 constprivate 修饰符,因此它看起来像是:
var constField = SyntaxFactory.FieldDeclaration(
    SyntaxFactory.VariableDeclaration(
        SyntaxFactory.PredefinedType(
            SyntaxFactory.Token(SyntaxKind.StringKeyword)))
    .WithVariables(
        SyntaxFactory.SingletonSeparatedList<VariableDeclaratorSyntax>(
            SyntaxFactory.VariableDeclarator(
                SyntaxFactory.Identifier("MyString"))
            .WithInitializer(
                SyntaxFactory.EqualsValueClause(
                    SyntaxFactory.LiteralExpression(
                        SyntaxKind.StringLiteralExpression,
                        SyntaxFactory.Literal("This is my string")))))))
.WithModifiers(
    SyntaxFactory.TokenList(
        new []{
            SyntaxFactory.Token(SyntaxKind.PrivateKeyword),
            SyntaxFactory.Token(SyntaxKind.ConstKeyword)}))))))

谢谢,这正是我想要的,也感谢您分享 Roslyn Quoter 的链接! - Sabrina_cs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接