Пример #1
0
        private SyntaxNode WrapForwardedIdentifier(IdentifierNameSyntax identifier, ParameterListSyntax parameterListSyntax)
        {
            var parameter = parameterListSyntax.Parameters.FirstOrDefault(p => p.Identifier.ToFullString() == identifier.ToFullString());
            var specialType = _typeTranslation.FirstOrDefault(tt => PrettyTypeName(tt.ActualType) == parameter.Type.ToFullString().Replace("global::", ""));

            if (specialType != null)
            {
                var wrappedExpression = SyntaxFactory.ParseExpression(specialType.ReverseTranslationExpression);
                var targetIdentifierNodes = wrappedExpression.DescendantNodes().OfType<IdentifierNameSyntax>().Where(i => i.ToFullString() == "target");
                wrappedExpression = wrappedExpression.ReplaceNodes(targetIdentifierNodes, (originalNode, rewrittenNode) => identifier);

                return wrappedExpression;
            }

            return identifier;
        }