roslyn - 如何为方法的所有参数提供修复 (Roslyn - FixProvider)
问题描述
我编写了代码分析器和修复提供程序来添加验证以确保参数不为空。它适用于多种方法,但我无法一次检查所有参数。分析仪将标记所有尚未检查的参数,但一次只能对一个参数进行修复。
详细信息: 这不是不可变节点的问题,如果需要,代码会添加 using 语句。
在分析仪中,我为每个参数注册诊断。
Diagnostic diagnostic = Diagnostic.Create(
Rule,
parameter.GetLocation(),
null,
prop.ToImmutableDictionary(),
parameter.Identifier.Text);
在修复提供程序中,我首先从上下文中进行诊断并为此注册代码修复。
也许我做错了什么,因此没有在修复提供程序中获得多个诊断。
进行多次修复的正确方法是什么?诊断的密钥/ID应该相同吗?或者是否应该直接注册诊断以抱怨所有参数。
解决方案
我希望找到好的解决方案:
分析仪报告每个无效参数的诊断,因此您可以为特定参数生成验证。之后,分析仪报告所有无效参数的另一次诊断并将方法标识符设置为位置。
相同的代码修复提供程序用于解决这两种类型的诊断。特定参数一(发送单个参数数据)和所有参数一(发送参数数据的集合)。
推荐阅读
- javascript - 在 JQuery 中导出 jqgrid 的 Pdf 和 Excel 文件
- excel - 为什么选择了中间过滤掉的行但没有被删除?
- facebook-graph-api - 如何找到 Instagram 应用的所有者 - 获得 AppId 和 AppSecret/ClientToken
- javascript - 如何使用硒单击甜甜圈图?
- xml - XSL-FO 和正确使用 xsl:template 和 xsl:for-each
- sql - 每组行具有唯一递增 id 的 SQL 查询(Postgresql)
- flutter - Getx Flutter - 更新列表中的项目不是反应性的
- python - 如何用while循环实现beautifulsoup并持续检测数据变化
- c# - 在 IGrouping 上调用自定义 IQueryable 扩展方法
- model-view-controller - Web 应用程序架构和 Web 应用程序架构设计之间有区别吗