public override ISerializerGenerator GetCustomSerializerGenerator(SerializerGenerationConfiguration config, string serializerProviderFullName, SourceFileMetadata generatedCodeMeta) { var generator = new StaticJsonCustomDeserializerGenerator( config.SerializersNameSpace, generatedCodeMeta, serializerProviderFullName ); PropertyGenerators.Add(new RecursiveStaticSerializerGenerator(generator)); return(generator); }
public string GetRead(string target, IPropertySymbol targetProperty, IValueSerializationGeneratorContext context) { var serializerType = FindCustomSerializerType(targetProperty); if (serializerType != null) { return($@"{target}.{targetProperty.Name} = {StaticJsonCustomDeserializerGenerator.GetClassName(serializerType)}.Instance.Deserialize( {context.Read.Reader}, {context.Read.FirstChar}, out {context.Read.OverChar});" ); } return(null); }
public string GetWrite(string sourceName, string source, IPropertySymbol sourceProperty, IValueSerializationGeneratorContext context) { var serializerType = FindCustomSerializerType(sourceProperty); if (serializerType != null) { var value = VariableHelper.GetName(sourceProperty.Type); return($@" var {value} = {source}.{sourceProperty.Name}; if ({value} != null) {{ {context.Write.Object}.WritePropertyName(""{sourceName}""); {StaticJsonCustomDeserializerGenerator.GetClassName(serializerType)}.Instance.Serialize({context.Write.Writer}, {value}); }}" ); } return(null); }
private void ConfigureGenerators() { _typeGenerator = (StaticJsonSerializerGenerator)_serializationTypeInstance.GetGenerator(_config, _roslynHelper, GetMetadata <StaticJsonSerializerGenerator>()); _builderGenerator = (StaticJsonBuilderSerializerGenerator)_serializationTypeInstance.GetBuilderGenerator(_config, _roslynHelper, GetMetadata <StaticJsonSerializerGenerator>());; _customSerializerGenerator = (StaticJsonCustomDeserializerGenerator)_serializationTypeInstance.GetCustomSerializerGenerator(_config, _serializerClassFullName, GetMetadata <StaticJsonCustomDeserializerGenerator>()); _enumsGenerator = new Enums(_config.SerializersNameSpace, _config.UseTryParseOrDefault, _config.IsMissingFallbackOnEnumsAllowed, GetMetadata <Enums>(), _serializationTypeInstance.PropertyFinder, _fallbackValueOverrides); _valueTypeGenerator = new ValueTypeSerializersGenerator(_config.SerializersNameSpace, _roslynHelper, _config.UseTryParseOrDefault, GetMetadata <ValueTypeSerializersGenerator>()); _serializerGenerator = new SerializerGenerator( _serializerClassFullName, new CompositeStaticSerializerResolver(_valueTypeGenerator, _enumsGenerator, _customSerializerGenerator, _builderGenerator, _typeGenerator), _collections, new JsonCollectionGenerator(_collections), _config.IsImmutablesAtRootDisabled, _roslynHelper, GetMetadata <SerializerGenerator>()); _moduleGenerator = new ModuleGenerator(_config.SerializersNameSpace, GetMetadata <ModuleGenerator>()); }