示例#1
0
        /// <inheritdoc/>
        public override async Task RegisterCodeFixesAsync(CodeFixContext context)
        {
            CodeFixData <AttributeSyntax> data = await CodeFixData <AttributeSyntax> .FromAsync(context, true).ConfigureAwait(false);

            if (!data.Success || !data.HasNode || !data.HasSemanticModel)
            {
                return;
            }

            if (data.Node.Parent?.Parent is not TypeParameterSyntax typeParameter ||
                data.SemanticModel.GetDeclaredSymbol(typeParameter, data.CancellationToken) is not ITypeParameterSymbol parameterSymbol ||
                GetTargetType(data.Node, data.SemanticModel, parameterSymbol.Ordinal, data.CancellationToken) is not ITypeSymbol targetType)
            {
                return;
            }

            CodeAction?action = GetCodeAction(in data, targetType);

            if (action is null)
            {
                return;
            }

            context.RegisterCodeFix(action, data.Diagnostic);
        }
        /// <inheritdoc/>
        public override async Task RegisterCodeFixesAsync(CodeFixContext context)
        {
            CodeFixData <TypeDeclarationSyntax> data = await CodeFixData <TypeDeclarationSyntax> .FromAsync(context, true).ConfigureAwait(false);

            if (!data.Success || !data.HasNode || !data.HasSemanticModel)
            {
                return;
            }

            INamedTypeSymbol?attribute = data.SemanticModel.Compilation.GetTypeByMetadataName(MemberNames.DefaultParamConfigurationAttribute);

            if (attribute is null)
            {
                return;
            }

            CodeAction?action = GetCodeAction(in data, attribute);

            if (action is null)
            {
                return;
            }

            context.RegisterCodeFix(action, data.Diagnostic);
        }