Roslyn代码生成,如何为给定类型创建一个类型表达式。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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});

以上是关于Roslyn代码生成,如何为给定类型创建一个类型表达式。的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 如何为泛型函数创建泛型类型别名?

如何为 SQL 表自动生成数据类型

如何为 Pandas 系列表达式指定类型提示

如何为自定义帖子类型存档页面创建导航

如何为 Spring Security 创建类型安全的用户角色?

如何为 AS400 表创建 SQL 触发器