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});

给TA打赏
共{{data.count}}人
人已打赏
解决方案

ModuleNotFoundError.在虚拟环境中运行服务器时,没有名为'django'的模块。在虚拟环境中运行服务器时,没有名为'django'的模块。

2022-4-20 1:00:07

解决方案

更新帖子后如何更新帖子作者

2022-4-20 1:00:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索