Roslyn analyser code fix - Disable preview option

陌路散爱 提交于 2019-12-01 23:33:51

CodeAction has separate ComputePreviewOperationsAsync() and ComputeOperationsAsync(). Having them return different values is what I believe you're looking for. But if you use the common approach of calling CodeAction.Create(), both will return the same values.

What you can do instead is to create a custom class that inherits from CodeAction and overrides the methods the way you want. For example:

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);
    }
}

This version completely disables preview. Another option would be to make preview take a different path, e.g. querying the database for the next value, but not updating it.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!