public override System.CodeDom.CodeMemberMethod GetSerializerMethod()
        {
            CodeMemberMethod method = base.GetSerializerMethod();

            method.Statements.Add(GetWriterExpression(CodeGen.GetWriter(), CodeGen.GetObject()));

            return(method);
        }
示例#2
0
        public override System.CodeDom.CodeMemberMethod GetSerializerMethod()
        {
            CodeMemberMethod method = base.GetSerializerMethod();

            method.Statements.Add(CodeGen.CallMethod(CodeGen.GetWriter(), "Write",
                                                     CodeGen.GetObject(), GetEncoding()));

            return(method);
        }
        public override System.CodeDom.CodeMemberMethod GetSerializerMethod()
        {
            CodeMemberMethod method = base.GetSerializerMethod();

            // No point doing anything if there is no length to write
            if (_reference.IsValid())
            {
                method.Statements.Add(GetWriterExpression(CodeGen.GetWriter(), CodeGen.GetObject()));
            }

            return(method);
        }
示例#4
0
        public override System.CodeDom.CodeMemberMethod GetSerializerMethod()
        {
            CodeMemberMethod method = base.GetSerializerMethod();

            CodeExpression expression = GetWriterExpression(CodeGen.GetWriter(), CodeGen.GetObject());

            if (expression != null)
            {
                method.Statements.Add(expression);
            }

            return(method);
        }
        public override System.CodeDom.CodeMemberMethod GetSerializerMethod()
        {
            CodeMemberMethod method = base.GetSerializerMethod();

            IMemberReaderWriter entry = BaseEntry as IMemberReaderWriter;

            List <CodeStatement> loopStatements = new List <CodeStatement>();

            loopStatements.Add(CodeGen.GetStatement(
                                   entry.GetWriterExpression(CodeGen.GetWriter(), new CodeIndexerExpression(CodeGen.GetObject(), CodeGen.GetVariable("i")))));

            method.Statements.Add(CodeGen.GetForLoop("i", 0,
                                                     CodeGen.GetProperty(CodeGen.GetObject(), "Length"), 1, loopStatements.ToArray()));

            return(method);
        }
示例#6
0
        public override System.CodeDom.CodeMemberMethod GetSerializerMethod()
        {
            CodeMemberMethod method = base.GetSerializerMethod();

            // No point doing anything if there is no length to write
            if (_reference.IsValid())
            {
                IMemberReaderWriter entry = BaseEntry as IMemberReaderWriter;

                List <CodeStatement> loopStatements = new List <CodeStatement>();

                loopStatements.Add(CodeGen.GetStatement(entry.GetWriterExpression(CodeGen.GetWriter(), CodeGen.GetIndex(CodeGen.GetObject(),
                                                                                                                        CodeGen.GetVariable("i")))));

                method.Statements.Add(CodeGen.GetForLoop("i", 0, CodeGen.GetProperty(CodeGen.GetObject(), "Length"),
                                                         1, loopStatements.ToArray()));
            }

            return(method);
        }
示例#7
0
        public override System.CodeDom.CodeMemberMethod GetPreSerializeMethod()
        {
            CodeMemberMethod method = base.GetPreSerializeMethod();

            if (_reference.IsValid())
            {
                CodeExpression right;

                if (_isByteLength)
                {
                    // Should really save this out and reuse when it comes to actually writing the data, seems a waste
                    method.Statements.Add(CodeGen.MakeVariable(typeof(DataWriter), "writer", CodeGen.CreateObject(typeof(DataWriter))));

                    IMemberReaderWriter entry = BaseEntry as IMemberReaderWriter;

                    List <CodeStatement> loopStatements = new List <CodeStatement>();

                    loopStatements.Add(CodeGen.GetStatement(entry.GetWriterExpression(CodeGen.GetWriter(), CodeGen.GetIndex(CodeGen.GetThisField(Name),
                                                                                                                            CodeGen.GetVariable("i")))));

                    method.Statements.Add(CodeGen.GetForLoop("i", 0, CodeGen.GetProperty(CodeGen.GetThisField(Name), "Length"),
                                                             1, loopStatements.ToArray()));

                    right = CodeGen.GetProperty(CodeGen.GetVariable("writer"), "BytesWritten");
                }
                else
                {
                    right = CodeGen.GetProperty(CodeGen.GetThisField(Name), "Length");
                }

                if (_adjustment != 0)
                {
                    right = CodeGen.GetOperator(right, CodeBinaryOperatorType.Subtract, CodeGen.GetPrimitive(_adjustment));
                }

                method.Statements.Add(CodeGen.GetAssign(CodeGen.GetField(CodeGen.GetThis(),
                                                                         _reference.GetNames()), CodeGen.GetCast(_reference.GetTargetMember().GetTypeReference(), right)));
            }

            return(method);
        }