public override byte[] Save(Project project) { // Wrap the project in a top-level root element with some info about the XML file // format version. Note that each serializer has its own implementation of storing this metadata var rootElement = new Root { SaveVersion = CurrentSaveFormatVersion, Watermark = ProjectSerializer.DizWatermark, Project = project, }; BeforeSerialize?.Invoke(this, rootElement); var xmlStr = XmlSerializationSupport.Serialize(rootElement); return(Encoding.UTF8.GetBytes(xmlStr)); }