Esempio n. 1
0
        => obj.Options?.MapEntry ?? false;     // don't write this type - use a dictionary instead

        /// <summary>
        /// Emit code representing a message type
        /// </summary>
        protected virtual void WriteMessage(GeneratorContext ctx, DescriptorProto obj)
        {
            object state = null;

            if (ShouldOmitMessage(ctx, obj, ref state))
            {
                return;
            }

            WriteMessageHeader(ctx, obj, ref state);
            var oneOfs = OneOfStub.Build(ctx, obj);


            if (WriteContructorHeader(ctx, obj, ref state))
            {
                foreach (var inner in obj.Fields)
                {
                    WriteInitField(ctx, inner, ref state, oneOfs);
                }
                WriteConstructorFooter(ctx, obj, ref state);
            }
            foreach (var inner in obj.Fields)
            {
                WriteField(ctx, inner, ref state, oneOfs);
            }

            if (oneOfs != null)
            {
                foreach (var stub in oneOfs)
                {
                    WriteOneOf(ctx, stub);
                }
            }


            foreach (var inner in obj.NestedTypes)
            {
                WriteMessage(ctx, inner);
            }
            foreach (var inner in obj.EnumTypes)
            {
                WriteEnum(ctx, inner);
            }
            if (obj.Extensions.Count != 0)
            {
                object extState = null;
                WriteExtensionsHeader(ctx, obj, ref extState);
                foreach (var ext in obj.Extensions)
                {
                    WriteExtension(ctx, ext);
                }
                WriteExtensionsFooter(ctx, obj, ref extState);
            }
            WriteMessageFooter(ctx, obj, ref state);
        }
Esempio n. 2
0
        => obj.Options?.MapEntry ?? false;     // don't write this type - use a dictionary instead

        /// <summary>
        /// Emit code representing a message type
        /// </summary>
        protected virtual void WriteMessage(GeneratorContext ctx, DescriptorProto obj)
        {
            object state = null;

            if (ShouldOmitMessage(ctx, obj, ref state))
            {
                return;
            }

            WriteMessageHeader(ctx, obj, ref state);
            var oneOfs = OneOfStub.Build(ctx, obj);

            ctx.WriteLine("#region 属性");
            foreach (var inner in obj.Fields)
            {
                WriteField(ctx, inner, ref state, oneOfs);
            }
            ctx.WriteLine("#endregion");

            ctx.WriteLine("#region 定义");
            foreach (var inner in obj.NestedTypes)
            {
                WriteMessage(ctx, inner);
            }
            foreach (var inner in obj.EnumTypes)
            {
                WriteEnum(ctx, inner);
            }
            if (obj.Extensions.Count != 0)
            {
                object extState = null;
                WriteExtensionsHeader(ctx, obj, ref extState);
                foreach (var ext in obj.Extensions)
                {
                    WriteExtension(ctx, ext);
                }
                WriteExtensionsFooter(ctx, obj, ref extState);
            }
            ctx.WriteLine("#endregion");

            ctx.WriteLine("#region 读取写入");
            WriteReadFun(ctx, obj, oneOfs);
            WriteWriteFun(ctx, obj, oneOfs);
            ctx.WriteLine("#endregion");


            WriteMessageFooter(ctx, obj, ref state);
        }