コード例 #1
0
        public override SyntaxNode VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
        {
            MemberAccessExpressionSyntax newBaseNode = (MemberAccessExpressionSyntax)base.VisitMemberAccessExpression(node);

            SyntaxNode?newNode = null;

            if (node.Expression is BaseExpressionSyntax)
            {
                SymbolInfo memberSymbolInfo = GetSemanticModel(node.Name).GetSymbolInfo(node.Name);
                ISymbol    memberSymbol     = memberSymbolInfo.Symbol ?? memberSymbolInfo.CandidateSymbols.FirstOrDefault() ?? throw new InvalidOperationException();

                newNode = SyntaxFactory.IdentifierName($"{memberSymbol.ContainingType.ToString().Replace(".", "::")}::{node.Name}");
            }
            else
            {
                if (node.TryGetMappedMemberName(GetSemanticModel(node), out ISymbol? memberSymbol, out string?mappedName))
                {
                    if (memberSymbol !.IsStatic)
                    {
                        newNode = SyntaxFactory.IdentifierName(mappedName);
                    }
                    else
                    {
                        newNode = SyntaxFactory.IdentifierName($"{newBaseNode.Expression}{mappedName}");
                    }
                }
コード例 #2
0
        public override void VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
        {
            base.VisitMemberAccessExpression(node);

            if (!node.TryGetMappedMemberName(GetSemanticModel(node).GetSymbolInfo(node.Name), out ISymbol memberSymbol, out _))
            {
                if (memberSymbol.ContainingType != null)
                {
                    CollectedTypes.Add(memberSymbol.ContainingType);
                }
            }
        }
コード例 #3
0
        public override void VisitMemberAccessExpression(MemberAccessExpressionSyntax node)
        {
            base.VisitMemberAccessExpression(node);

            if (!node.TryGetMappedMemberName(GetSemanticModel(node), out ISymbol? memberSymbol, out _))
            {
                if (memberSymbol?.ContainingType != null)
                {
                    string fullTypeName = memberSymbol.ContainingType.ToDisplayString(
                        new SymbolDisplayFormat(typeQualificationStyle: SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces))
                                          + ", " + memberSymbol.ContainingType.ContainingAssembly.Identity.ToString();

                    Type?type = Type.GetType(fullTypeName);

                    CollectedTypes.Add(type);
                }
            }
        }