1 // =================================
 2 // Copyright (c) 2024 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 using System;
 7 using System.Collections;
 8 
 9 namespace System.Xml.Serialization
10 {
11     public abstract class XmlSerializable
12     {
13         public XmlSerializable() : objectId(Uuid.Random())
14         {
15         }
16         public virtual default ~XmlSerializable();
17         public const Uuid& ObjectId() const
18         {
19             return objectId;
20         }
21         public void SetObjectId(const Uuid& objectId_)
22         {
23             objectId = objectId_;
24         }
25         public virtual string ClassName() const
26         {
27             return typename(*this);
28         }
29         public abstract Result<bool> SetObjectXmlAttributes(System.Xml.Element* element);
30         public abstract int ClassId() const;
31         public Result<System.Xml.Element*> ToXml(const string& elementName)
32         {
33             XmlSerializationContext ctx;
34             return ToXml(elementNamectx);
35         }
36         public abstract Result<System.Xml.Element*> ToXml(const string& elementNameXmlSerializationContext& ctx);
37         public Result<bool> FromXml(System.Xml.Element* element)
38         {
39             XmlSerializationContext ctx;
40             return FromXml(elementctx);
41         }
42         public abstract Result<bool> FromXml(System.Xml.Element* elementXmlSerializationContext& ctx);
43         private Uuid objectId;
44     }
45 }