コード例 #1
0
        private ODataWriter CreateWriterImplementation(string parameterName, bool writingFeed)
        {
            var subSchema = this.GetSubSchema(parameterName);

            if (writingFeed)
            {
                subSchema = ODataAvroSchemaGen.GetItemSchema(subSchema);
            }

            return(new ODataAvroWriter(
                       this.outputContext,
                       obj => { this.record[parameterName] = obj; },
                       subSchema,
                       writingFeed));
        }
コード例 #2
0
ファイル: AvroWriter.cs プロジェクト: zhonli/odata.net
        public TypeSchema UpdateSchema(object value, IEdmType edmType, bool collection = false)
        {
            TypeSchema schema = null;

            if (edmType != null)
            {
                try
                {
                    schema = ODataAvroSchemaGen.GetSchemaFromModel(edmType);
                }
                catch (ApplicationException) { }
            }

            if (schema == null)
            {
                if (value == null)
                {
                    return(null);
                }

                schema = ODataAvroSchemaGen.GetSchema(value);
            }

            TypeSchema single = AvroSerializer.CreateGeneric(schema.ToString()).WriterSchema;

            if (collection)
            {
                schema = ODataAvroSchemaGen.GetArraySchema(schema);
                single = ((ArraySchema)AvroSerializer.CreateGeneric(schema.ToString()).WriterSchema).ItemSchema;
            }

            var writer = AvroContainer.CreateGenericWriter(schema.ToString(), stream, true, Codec.Null);

            this.seqWriter = new SequentialWriter <object>(writer, 16);

            return(single);
        }