/// <summary> /// Converts an object to Avro generic record using reflection /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="customValueGetter"></param> /// <returns></returns> public static AvroRecord ToAvroRecord <T>( this T obj, ICustomValueGetter customValueGetter = null) where T : class { if (obj == null) { return(null); } _customValueGetter = customValueGetter; return((AvroRecord)ToAvroRecord(obj, obj.GetType().GetAvroSchema())); }
/// <summary> /// Converts an object to an Avro generic record based on the supplied schema /// </summary> /// <param name="obj"></param> /// <param name="recordSchema"></param> /// <param name="customValueGetter"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static AvroRecord ToAvroRecord <T>( this T obj, string recordSchema, ICustomValueGetter customValueGetter = null) where T : class { var typeSchema = new JsonSchemaBuilder().BuildSchema(recordSchema); if (!(typeSchema is RecordSchema)) { throw new ApplicationException("Invalid record schema"); } _customValueGetter = customValueGetter; return((AvroRecord)ToAvroRecord(obj, typeSchema)); }