首页 > 解决方案 > Roslyn 代码生成,如何为给定类型创建类型表达式

问题描述

我正在尝试使用 Roslyn 生成代码。我创建了一个这样的方法:

var workspace = new AdhocWorkspace();
var generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp);

var parameters = new SyntaxNode[] { generator.ParameterDeclaration("MyParam", generator.TypeExpression(SpecialType.System_Boolean))};

var body = ...

var method = generatpr.MethodDeclaration(
   "MyMethod", 
   parameters,
   null, 
   null,
   Accessibility.Public,
   DeclarationModifiers.Virtual,
   new SyntaxNode[] { body});

我的问题是,如何创建其他类型的参数,如 Guid,或其他结构或类?我可以以与语言无关的方式做到这一点吗?

标签: c#roslyn

解决方案


yntaxGenerator 实例,并且我有一个 Type 对象的实例,所以我使用了 SyntaxGenerator.IdentifierName() 函数,并传入了 Type 实例的 FullName 属性。

var workspace = new AdhocWorkspace();
var generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp);

var parameters = new SyntaxNode[] { generator.ParameterDeclaration("MyParam", generator.IdentifierName(typeParameter.FullName))};

var body = ...

var method = generatpr.MethodDeclaration(
   "MyMethod", 
   parameters,
   null, 
   null,
   Accessibility.Public,
   DeclarationModifiers.Virtual,
   new SyntaxNode[] { body});

推荐阅读