Esempio n. 1
0
        private SyntaxList <MemberDeclarationSyntax> CreateProtectedConstructors()
        {
            var list = new SyntaxList <MemberDeclarationSyntax>();

            //We implicitly have version
            //if( m_fields.Count > 0 )
            {
                BaseMethodDeclarationSyntax cons = SF.ConstructorDeclaration(m_class.Identifier);

                cons = SU.AddKeyword(cons, SyntaxKind.ProtectedKeyword);

                var paramList = new SeparatedSyntaxList <ParameterSyntax>();

                {
                    var param = SF.Parameter(SF.Identifier("version"))
                                .WithType(SF.IdentifierName("ulong"));

                    paramList = paramList.Add(param);
                }


                foreach (var f in m_fields)
                {
                    var param = SF.Parameter(f.Key.Identifier)
                                .WithType(f.Value);

                    paramList = paramList.Add(param);
                }



                cons = cons.WithParameterList(SF.ParameterList(paramList));

                var block = SF.Block();

                var assignments = new SyntaxList <StatementSyntax>();

                foreach (var f in m_fields)
                {
                    var statement = SF.ParseStatement($"this.{f.Key.Identifier} = {f.Key.Identifier};");

                    assignments = assignments.Add(statement);
                }

                block = block.WithStatements(assignments);

                cons = cons.WithBody(block);


                list = list.Add(cons);
            }


            {
                BaseMethodDeclarationSyntax cons = SF.ConstructorDeclaration(m_class.Identifier);

                cons = SU.AddKeyword(cons, SyntaxKind.ProtectedKeyword);

                var block = SF.Block();

                cons = cons.WithBody(block);

                list = list.Add(cons);
            }


            return(list);
        }