diff --git a/src/AvroConvert/AvroObjectServices/BuildSchema/ReflectionSchemaBuilder.cs b/src/AvroConvert/AvroObjectServices/BuildSchema/ReflectionSchemaBuilder.cs index 783245e..bb27b4b 100644 --- a/src/AvroConvert/AvroObjectServices/BuildSchema/ReflectionSchemaBuilder.cs +++ b/src/AvroConvert/AvroObjectServices/BuildSchema/ReflectionSchemaBuilder.cs @@ -440,9 +440,17 @@ private TypeSchema TryBuildUnionSchema(Type memberType, MemberInfo memberInfo, D { result.Add(memberType); } + + var unionSchemas = result.Select(type => CreateNotNullableSchema(type, schemas, currentDepth + 1, memberInfo, representation)).ToList(); + var typeInfo = _resolver.ResolveType(memberType, memberInfo); - return new UnionSchema(result.Select(type => CreateNotNullableSchema(type, schemas, currentDepth + 1, memberInfo, representation)).ToList(), memberType); + if (typeInfo.Nullable) + { + unionSchemas.Insert(0, new NullSchema()); + } + + return new UnionSchema(unionSchemas, memberType); } private FixedSchema TryBuildFixedSchema(Type memberType, MemberInfo memberInfo, NamedSchema parentSchema)