如何禁用C#项目中灯泡后出现的预览对话框?
我的问题是,RegisterCodeFixesAsync调用数据库并增加id,但这会发生两次(一次在预览时,第二次在操作被调用时),而不是只增加一次,导致id增加了两次。
如何禁用C#项目中灯泡后出现的预览对话框?
我的问题是,RegisterCodeFixesAsync调用数据库并增加id,但这会发生两次(一次在预览时,第二次在操作被调用时),而不是只增加一次,导致id增加了两次。
CodeAction
有单独的ComputePreviewOperationsAsync()
和ComputeOperationsAsync()
方法。它们返回不同的值是我认为你所需要的。但如果你使用通用的调用CodeAction.Create()
的方法,两个方法将返回相同的值。
相反你可以创建一个自定义类,该类继承CodeAction
并按你想要的方式重写方法。例如:
class NoPreviewCodeAction : CodeAction
{
private readonly Func<CancellationToken, Task<Solution>> createChangedSolution;
public override string Title { get; }
public override string EquivalenceKey { get; }
public NoPreviewCodeAction(
string title, Func<CancellationToken, Task<Solution>> createChangedSolution,
string equivalenceKey = null)
{
this.createChangedSolution = createChangedSolution;
Title = title;
EquivalenceKey = equivalenceKey;
}
protected override Task<IEnumerable<CodeActionOperation>> ComputePreviewOperationsAsync(
CancellationToken cancellationToken)
{
return Task.FromResult(Enumerable.Empty<CodeActionOperation>());
}
protected override Task<Solution> GetChangedSolutionAsync(
CancellationToken cancellationToken)
{
return createChangedSolution(cancellationToken);
}
}