【发布时间】:2017-09-07 11:35:24
【问题描述】:
我可以使用 SyntaxGenerator 来生成 Int32 类型的参数,就像这样...
var generator = SyntaxGenerator.GetGenerator(document);
var paramType = generator.TypeExpression(SpecialType.System_Int32);
var param = generator.ParameterDeclaration("MyParam", paramType);
我应该使用什么等效代码来创建 Dataset 类型的参数?
我想我需要创建一个 ITypeSymbol 来传递给 generator.TypeExpression,但是该怎么做呢?
【问题讨论】:
-
你想在什么情况下这样做?您可以访问语义模型或编译吗?如果是这样,那么您可以使用
SyntaxFactory.ParseTypeName()从任何类型名称中获取TypeSyntax。然后,就可以通过语义模型得到类型符号了。 -
了解我对 Roslyn 很陌生...我试图从 DiagnosticAnalyzers、CodeFixProviders 和 RefactoringProviders 的上下文中执行此操作,但对于 Roslyn 来说是新手,我不确定我要做什么在这种情况下,我可以随意使用。我希望以与语言无关的方式实现这一点,因此使用 SyntaxGenerator 而不是 SyntaxFactory,尽管如果可以找到一种方法来在运行时获取对正确 SyntaxFactory 的引用,那么这可能会起作用。
标签: c# code-generation roslyn