Пример #1
0
        protected override ClassDeclarationSyntax GenerateResultClass(IEnumerable <PropertyGroup> propertyGroups)
        {
            var resultClass = GenerateClassForProperties(ResultClassName, propertyGroups.SelectMany(g => g.Properties));

            var parseMethodBody = resultClass.DescendantNodes()
                                  .OfType <MethodDeclarationSyntax>()
                                  .Single(m => m.Identifier.ValueText == "Parse")
                                  .Body;

            var statements = parseMethodBody.Statements;

            var newStatement = SyntaxEx.Assignment(
                SyntaxFactory.IdentifierName("element"),
                SyntaxEx.Invocation(
                    SyntaxEx.MemberAccess(SyntaxEx.Invocation(SyntaxEx.MemberAccess("element", "Elements")), "Single")));

            var newStatements = new[] { newStatement }.Concat(statements);

            var newBody = SyntaxEx.Block(newStatements);

            return(resultClass.ReplaceNode(parseMethodBody, newBody));
        }