如何执行依赖内部接口的Roslyn修复程序

问题描述 投票:0回答:1

我正在尝试在 IDE (QueryStorm) 中支持内置 Roslyn 代码修复程序。我已经成功使用了一些修复程序,其中大多数是不需要用户界面的修复程序,例如

ProjectSymbolReferenceCodeAction
可以添加缺失的
using namespace ...
声明。

由于必要的类型是内部的,我无法支持其他修复程序。例如,

CodeActionWithNestedActions
类型是内部的,因此如果我想在 IDE 中提供它们,我必须使用反射来获取
NestedCodeActions
。虽然不方便,但这仍然是可行的。

但是,其他情况似乎没有可行的解决方法。例如,

Microsoft.CodeAnalysis.GenerateEqualsAndGetHashCodeFromMembers
修复程序需要名为
IPickMembersService
的服务来从用户收集附加信息。问题是这个接口是内部的,所以我无法实现它。

这是否意味着我无法使用此修复程序和其他类似的修复程序,或者我是否以错误的方式处理此问题?如果我无法使用这些修复程序,那么有什么好方法来确定我可以使用哪些修复程序以及不能使用哪些修复程序?

c# roslyn
1个回答
0
投票

这是否意味着我不能使用这个修复程序和其他类似的工具

这些接口是内部的,所以我们真的不希望第三方来实现它们。您可以向 Roslyn 提交错误以制定计划,但我承认我不确定我们会朝哪个方向发展。 (我们也围绕 VS Code 进行了一些类似的对话,因为我们现有的 UI 不是跨平台的,所以我们不支持 VS Code 中的这些修复。)

请注意,其中一些修复也有显示 UI 的选项,而有些则不会。如果您发现我们没有正常检测服务缺失并抛出异常的错误,请提交错误或发送 PR。

或者我的处理方式是错误的吗?

很难说你是否还做了其他错误的事情;请随时在 GitHub 上就您遇到的问题展开对话,我们可以评论这是否是因为您确实在某个地方走错了路,或者您只是做了一些我们从未预料到的事情。

© www.soinside.com 2019 - 2024. All rights reserved.