Patrick Farry created AVRO-2499:
-----------------------------------

             Summary: C# reflect does not cache classes referenced in a union
                 Key: AVRO-2499
                 URL: https://issues.apache.org/jira/browse/AVRO-2499
             Project: Apache Avro
          Issue Type: Bug
          Components: csharp
            Reporter: Patrick Farry


In the example below an attempt to serialize an object of type A fails.

{ "name" : "A", 

   "type" " : "record",

   "fields" : [

        { "name" : "OptionalProperty",

           "type" : [ "null",

                          { "name" : "B",

                             "type" : "record",

                             "fields" : [ "name" : "C", "type" : "string" ]

                           }

                      ]

        }

} 

 

 

 

C# classes

public class A {

    public B OptionalProperty \{ get; set;}

}

public class B {

    public string C \{ get; set;}

}

 

 

Problem is in Reflect/ClassCache.cs line 259.

Need to add the following case
case UnionSchema us:
    foreach (var o in us.Schemas)
    {
        if (o.Tag!=Avro.Schema.Type.Null)
        {
            LoadClassCache(objType, o);
        }
    }
 
Will do a PR 



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to