예제 #1
0
        ParameterHintingResult HandleConstructorInitializer(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
        {
            var info           = semanticModel.GetSymbolInfo(node, cancellationToken);
            var result         = new ParameterHintingResult(node.SpanStart);
            var resolvedMethod = info.Symbol as IMethodSymbol;

            if (resolvedMethod != null)
            {
                var type   = resolvedMethod.ContainingType;
                var within = semanticModel.GetEnclosingNamedTypeOrAssembly(node.SpanStart, cancellationToken);

                result.AddRange(type.GetMembers()
                                .OfType <IMethodSymbol> ()
                                .Where(m => m.MethodKind == MethodKind.Constructor && m.IsAccessibleWithin(within))
                                .Select(factory.CreateConstructorProvider));
            }
            else
            {
                result.AddRange(info.CandidateSymbols.OfType <IMethodSymbol> ().Select(factory.CreateConstructorProvider));
            }
            return(result);
        }
예제 #2
0
        ParameterHintingResult HandleAttribute(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
        {
            var info           = semanticModel.GetSymbolInfo(node, cancellationToken);
            var result         = new ParameterHintingResult(node.SpanStart);
            var resolvedMethod = info.Symbol as IMethodSymbol;

            if (resolvedMethod != null)
            {
                result.AddData(factory.CreateConstructorProvider(resolvedMethod));
            }
            result.AddRange(info.CandidateSymbols.OfType <IMethodSymbol>().Select(m => factory.CreateConstructorProvider(m)));
            return(result);
        }
예제 #3
0
        ParameterHintingResult HandleAttribute(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
        {
            var info           = semanticModel.GetSymbolInfo(node, cancellationToken);
            var result         = new ParameterHintingResult(node.SpanStart);
            var resolvedMethod = info.Symbol as IMethodSymbol;

            if (resolvedMethod != null)
            {
                foreach (var c in resolvedMethod.ContainingType.GetMembers().OfType <IMethodSymbol> ().Where(m => m.MethodKind == MethodKind.Constructor))
                {
                    result.AddData(factory.CreateConstructorProvider(c));
                }
            }
            else
            {
                result.AddRange(info.CandidateSymbols.OfType <IMethodSymbol> ().Select(factory.CreateConstructorProvider));
            }
            return(result);
        }