如何为任意类型创建Roslyn ITypeSymbol?

时间:2017-04-11 21:51:49

标签: c# code-generation roslyn

我可以使用 SyntaxGenerator 生成类型 Int32 的参数,如此...

var generator = SyntaxGenerator.GetGenerator(document);
var paramType = generator.TypeExpression(SpecialType.System_Int32);
var param = generator.ParameterDeclaration("MyParam", paramType);

我应该使用什么等效代码来创建数据集类型的参数?

我认为我需要创建一个 ITypeSymbol 来传递给 generator.TypeExpression ,但是如何做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您有权访问Compilation,则可以使用GetTypeByMetadataName,如this blog postthis SO answer中所述:

var dataSetType = compilation.GetTypeByMetadataName("System.Data.DataSet");
var paramType = generator.TypeExpression(dataSetType);
var param = generator.ParameterDeclaration("MyParam", paramType);