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