private static AbstractPersistentData Deserialize(string filePath, string importedBuildPath) { var deserializer = new IPersistentDataDeserializer[] { new PersistentDataDeserializerUpTo230(), new PersistentDataDeserializerCurrent() }; var xmlString = File.ReadAllText(filePath); var version = SerializationUtils.XmlDeserializeString <XmlPersistentDataVersion>(xmlString).AppVersion; IPersistentDataDeserializer suitableDeserializer; if (version == null) { suitableDeserializer = deserializer.FirstOrDefault(c => c.MinimumDeserializableVersion == null); } else { var v = new Version(version); suitableDeserializer = deserializer.FirstOrDefault(c => v.CompareTo(c.MinimumDeserializableVersion) >= 0 && v.CompareTo(c.MaximumDeserializableVersion) <= 0); } if (suitableDeserializer == null) { throw new Exception( $"No converter available that can deserialize a PersistentData file with version {version}"); } var data = new PersistentData(suitableDeserializer, importedBuildPath); suitableDeserializer.DeserializePersistentDataFile(xmlString); return(data); }
private static AbstractPersistentData Deserialize(string filePath, string importedBuildPath) { var deserializer = new IPersistentDataDeserializer[] { new PersistentDataDeserializerUpTo230(), new PersistentDataDeserializerCurrent() }; var xmlString = File.ReadAllText(filePath); var version = SerializationUtils.XmlDeserializeString<XmlPersistentDataVersion>(xmlString).AppVersion; IPersistentDataDeserializer suitableDeserializer; if (version == null) { suitableDeserializer = deserializer.FirstOrDefault(c => c.MinimumDeserializableVersion == null); } else { var v = new Version(version); suitableDeserializer = deserializer.FirstOrDefault(c => v.CompareTo(c.MinimumDeserializableVersion) >= 0 && v.CompareTo(c.MaximumDeserializableVersion) <= 0); } if (suitableDeserializer == null) { throw new Exception( $"No converter available that can deserialize a PersistentData file with version {version}"); } var data = new PersistentData(suitableDeserializer, importedBuildPath); suitableDeserializer.DeserializePersistentDataFile(xmlString); return data; }
public PersistentData(IPersistentDataDeserializer deserializer, string importedBuildPath) { _deserializer = deserializer; _deserializer.PersistentData = this; _importedBuildPath = importedBuildPath; _currentDeserializer = deserializer as PersistentDataDeserializerCurrent ?? new PersistentDataDeserializerCurrent { PersistentData = this }; }
public PersistentData(IPersistentDataDeserializer deserializer, string importedBuildPath) { _deserializer = deserializer; _deserializer.PersistentData = this; _importedBuildPath = importedBuildPath; _currentDeserializer = deserializer as PersistentDataDeserializerCurrent ?? new PersistentDataDeserializerCurrent {PersistentData = this}; }