Details
Description
Currently, AvroC # ReflectReader does not support avro aliases.
public class SampleOld { public string OldValue { set; get; } } public static string SampleOldSchema => "{" + " \"type\":\"record\"," + " \"name\":\"Sample\"," + " \"fields\":[" + " {" + " \"name\":\"OldValue\"," + " \"type\":\"string\"" + " }" + " ]" + "}"; public class SampleNew { public string NewValue { set; get; } = ""; } public static string SampleNewSchema => "{" + " \"type\":\"record\"," + " \"name\":\"Sample\"," + " \"fields\":[" + " {" + " \"name\":\"NewValue\"," + " \"aliases\":[\"OldValue\"]," + " \"type\":\"string\"" + " }" + " ]" + "}"; static void Main(string[] args) { using var stream = new MemoryStream(); var sample = new SampleOld() { OldValue = "TestValue" }; var writerSchema = Schema.Parse(SampleOldSchema); var avroWriter = new ReflectWriter<SampleOld>(writerSchema); avroWriter.Write(sample, new BinaryEncoder(stream)); stream.Position = 0; var readerSchema = Schema.Parse(SampleNewSchema); var avroReader = new ReflectReader<SampleNew>(writerSchema, readerSchema); var Result = avroReader.Read(new BinaryDecoder(stream)); // Read Function is Success // NewValue does not contain the OldValue value Console.WriteLine($"Read Value = {Result.NewValue}"); }