C# Roslyn代码生成,如何为给定类型创建类型表达式
我正在尝试使用Roslyn生成代码。我创建了如下方法:C# Roslyn代码生成,如何为给定类型创建类型表达式,c#,roslyn,C#,Roslyn,我正在尝试使用Roslyn生成代码。我创建了如下方法: var workspace = new AdhocWorkspace(); var generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp); var parameters = new SyntaxNode[] { generator.ParameterDeclaration("MyParam", generator.TypeExpression(S
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实例,我有一个类型对象的实例,所以我使用了SyntaxGenerator.IdentifierName()函数,并传入了类型实例的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});
这回答了你的问题吗?最有可能帮助我的是Compilation.GetTypeByMetadataName,但我需要一个编译对象的实例。我怎么得到它?默认值literal@EvanTrimboli-我也看到了,但它需要编译。因为我正在生成代码,所以我有一个SyntaxGenerator实例,还有一个Type对象的实例,所以我使用了SyntaxGenerator.IdentifierName()函数,并传入了Type实例的FullName属性。