首页 文章

如果有的话,通过诊断传递序列化数据的危险是什么?

提问于
浏览
1

通过创建诊断,您可以使用自定义数据传入 Dictionary<string, string> . 之后,您可以在读取诊断的任何内容中使用它来提供上下文信息 . 可用的典型方案是在分析器和代码修复之间 .

这种传递数据的方法有多可靠?是否应该记住哪些特殊注意事项?

我记得几个月前关于这个问题的讨论,当时提出关于可串行化的问题是不提供这种功能的一个原因 . 我想到的其他事情是竞争条件的可能性(代码修复程序根据分析仪过时的信息),但我在质疑它的可能性(或者它是否可能) . 更改语法树时应取消诊断,但我不知道这是否传播到代码修复 .

a specific example:我正在做一些技巧来发现两件事:参数名称和位置 . 在分析器中,此位置用于显示波浪线下划线,而参数用于创建新调用 . 我不是两次计算参数名称和位置,而是通过 properties 参数传递,然后使用分析器中确定的位置从代码修复中检索受影响的节点 .

1 回答

  • 2

    只要系统中存在诊断,就会维护属性 . 所以你可以依赖你从分析仪输入的数据 .

    但话虽如此,如果可能的话,避免使用属性包对用户来说会更好 .

    这些预先计算的诊断是在没有用户交互的情况下生成的,并且保存在系统中以用于整个解决方案,因此每个诊断的那些少量额外信(基本消耗资源)

    与诊断相比,修复程序仅在有明确的用户操作且仅运行少量修复程序时运行(通常适用于插入符号的行)

    所以将一些数据放在诊断中只是为了使修复器更快一点(如果加速很快,那么你可能有理由)就像在每次系统重启时加载控制面板以加快第一次启动时间,以防万一你以前使用控制面板关机 .

相关问题