private bool ReadConfig() { // Ensure config file exist if (!File.Exists(_configFile)) { return(false); } // Deserialize configuration file try { using (var fs = File.OpenRead(_configFile)) { // TODO: Validate config _config = (SerializerGenerationConfiguration) new XmlSerializer(typeof(SerializerGenerationConfiguration)).Deserialize(fs); _serializerClassFullName = $"{_config.SerializersNameSpace}.{_config.SerializationType}StaticSerializer"; _config.ModuleClassName = _config.ModuleClassName ?? "Module"; } } catch (Exception e) { throw new Exception("Invalid static deserializer configuration file ({0})".InvariantCultureFormat(_configFile), e); } return(true); }
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 override IStaticSerializerResolver GetGenerator( SerializerGenerationConfiguration config, RoslynMetadataHelper metadataHelper, SourceFileMetadata generatedCodeMeta) { var generator = new StaticJsonSerializerGenerator( metadataHelper, config.SerializersNameSpace, config.DisableToUpperConstructor, PropertyFinder, PropertyGenerators, generatedCodeMeta ); PropertyGenerators.Add(new RecursiveStaticSerializerGenerator(generator)); return(generator); }
public static SerializationType CreateInstance(this SerializerGenerationConfiguration configuration, RoslynMetadataHelper helper) { switch (configuration.SerializationType) { case SerializationTypeName.Json: return(new JsonSerializationType { Name = "Json", PropertyFinder = new DefaultPropertyFinder(), StaticDeserializerPropertyFinder = new JsonStaticDeserializerPropertyFinder(), CustomDeserializerPropertyFinder = new JsonCustomDeserializerPropertyFinder(), PropertyGenerators = new List <IValueSerializationGenerator> { // Note: Generators are used in the order of the registration. // Be sure to put "special cases" before "generic cases" // // For instance, put the MicrosoftDateTimeGenerator before the JsonReaderGenerator // which also handles DateTime, but does not validate the attribute. new CustomSerializerGenerator(), // This must be the first in order to be able to override all types new UriGenerator(), new GuidGenerator(), new EnumGenerator(new Enums(string.Empty, true, true, null, new DefaultPropertyFinder(), null)), new MicrosotDateTimeGenerator(configuration.UseTryParseOrDefault), new DateTimeGenerator(configuration.UseTryParseOrDefault), new JsonCollectionGenerator(new CollectionImplementationResolver(helper)), new JsonReaderGenerator(configuration.UseTryParseOrDefault), new JsonWriterGenerator(), } }); default: throw new ArgumentOutOfRangeException("typeName", "Unknwon serialization type."); } }
public abstract ISerializerGenerator GetCustomSerializerGenerator(SerializerGenerationConfiguration config, string serializerProviderFullName, SourceFileMetadata metadata);
public abstract IStaticSerializerResolver GetBuilderGenerator(SerializerGenerationConfiguration config, RoslynMetadataHelper metadataHelper, SourceFileMetadata metadata);