使用Roslyn 生成 public a:b<T>{}
时间: 2023-02-25 14:45:54 浏览: 106
AsyncGenerator:使用Roslyn生成异步C#代码
使用Roslyn生成公共类可以通过使用CodeDom或者SyntaxTree。
首先,你需要安装 Microsoft.CodeAnalysis.CSharp NuGet 包,然后可以使用以下代码生成公共类:
```
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
namespace CodeGeneration
{
class Program
{
static void Main(string[] args)
{
// 生成公共类的语法树
var classDeclaration = SyntaxFactory.ClassDeclaration("a")
.WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword)))
.WithTypeParameterList(SyntaxFactory.TypeParameterList(SyntaxFactory.SingletonSeparatedList<TypeParameterSyntax>(SyntaxFactory.TypeParameter("T"))));
// 生成语法树的根节点
var syntaxTree = SyntaxFactory.SyntaxTree(classDeclaration);
// 获取生成的C#代码
var generatedCode = syntaxTree.ToString();
// 输出生成的代码
Console.WriteLine(generatedCode);
}
}
}
```
输出:
```
public class a<T>
{
}
```
阅读全文