如何使用 .NET 编译器平台创建 const 声明
Howto create a const declaration using .NET Compiler Platform
我正在尝试使用 Roslyn 或现在称为 .NET Compiler Platform 创建一个小型代码生成器,之前我使用 codedom,这很麻烦但 MSDN 得到了参考,现在 Roslyn 几乎没有文档和所有文档侧重于代码分析而不是代码生成。
所以我的问题很简单:
我怎样才能创建类似的东西:
private const string MyString = "This is my string";
使用编译器平台类?我发现了类似 FieldDeclarationSyntax 和 ExpressionSyntax 的东西,但我发现的所有样本都会生成类似
Myclass myvariable = new Myclass();
没有什么比如何生产
字符串类型声明。
任何线索都会很棒。
提前谢谢你
您可以使用 Roslyn Quoter 轻松了解如何构建不同的语法片段。在这种情况下,您想要将 const
和 private
修饰符添加到字段声明中,因此它看起来像:
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 或现在称为 .NET Compiler Platform 创建一个小型代码生成器,之前我使用 codedom,这很麻烦但 MSDN 得到了参考,现在 Roslyn 几乎没有文档和所有文档侧重于代码分析而不是代码生成。 所以我的问题很简单: 我怎样才能创建类似的东西:
private const string MyString = "This is my string";
使用编译器平台类?我发现了类似 FieldDeclarationSyntax 和 ExpressionSyntax 的东西,但我发现的所有样本都会生成类似 Myclass myvariable = new Myclass(); 没有什么比如何生产 字符串类型声明。 任何线索都会很棒。 提前谢谢你
您可以使用 Roslyn Quoter 轻松了解如何构建不同的语法片段。在这种情况下,您想要将 const
和 private
修饰符添加到字段声明中,因此它看起来像:
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)}))))))