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,或其他结构或类?我能以一种语言不可知论的方式做到这一点吗?

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});

最新更新