c# - 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});
推荐阅读
- aem - 如何在使用条件语句的同时附加一个字符?
- javascript - 用 JS 计算一个值并将该值存储在数据库中
- react-native - 当我们平移本机反应时,如何检测对象的 x 位置?
- javascript - React - 尝试在 reduce() 函数中引用 this.props
- biztalk - BizTalk Server TMS 警告 12223
- python - 多处理共享变量(类型自创)
- tensorflow - tfjs-examples/date-conversion-attention 中使用的注意力模型是什么?
- javascript - 如何遍历特定 div 标签中的所有标题标签?
- mysql - MySQL存储过程中的条件表达式
- python - 从 Python 以隐身模式打开 Chrome 页面