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

标签 c# code-generation roslyn

我可以像这样使用SyntaxGenerator 生成Int32 类型的参数...

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

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

我想我需要创建一个 ITypeSymbol 来传递给 generator.TypeExpression,但是如何做呢?

最佳答案

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

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

关于c# - 如何为任意类型创建 Roslyn ITypeSymbol?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43356807/

相关文章:

c# - mysql 转储-未知数据库 'mysqldump'

c# - 使用 Response.TransmitFile 下载文件但也包含页面源

java - 带有 Java 代码生成的 Eclipse UML 插件

c# - 是否存在用于生成源文件的 C# 库?

c# - 无法将参数添加到 Roslyn 中的 SyntaxFactory.ArgumentList()

罗斯林 C#6 ?泛型类型中的运算符编译看起来很困惑

c# - Fluent NHibernate OptimisticLock.None() 导致 "The string ' none' 不是有效的 bool 值。”

c# - 异步后如何在主线程上运行代码

c++ - 为什么不使用时分配堆栈内存?

roslyn - 来自 Roslyn 的扩展方法信息