Announcement

Collapse
No announcement yet.

XmlDocument und mein Denkfehler ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XmlDocument und mein Denkfehler ?

    Hallo,

    ich habe ein mehr oder weniger kleines Problem mit einer Klasse die ich vom XmlDocument abgeleitet habe und die ich jetzt clonen möchte.

    Ausschnitt aus der Klasse:
    PHP Code:
    public class XmlServerDocument XmlDocumentIDisposableICloneable
        
    {
            private 
    XmlElement _loginElement null;
            private const 
    int LOGIN_REQUEST_ID 0;
            private const 
    string XML_ID "0";

            private 
    string _url String.Empty;
            public 
    string URL get { return _url; } }

            public 
    XmlServerDocument(string urlstring userstring passwordstring license)
            {
                
    _url url;
                
    this.AppendChild(this.CreateXmlDeclaration("1.0""UTF-8""yes"));

                
    XmlElement _root this.CreateElement("REQUEST");
                
    _root.SetAttribute("XMLID"XML_ID); 
    Das Problem ist, dass ich nicht weiß ob und wie ich eine Instanz der Klasse ohne enormen Aufwand clonen kann.

    Ich denke ja eher, dass ich einen Knoten im Kopf habe und es eigentlich nicht so schwer ist. Vielleicht kann mir da einer helfen

    MfG
    Micha

  • #2
    Das Problem ist, dass ich nicht weiß ob und wie ich eine Instanz der Klasse ohne enormen Aufwand clonen kann.
    Clonen ist ein nettes Wort. Aber was für einen Clone willst du? Deep, Shallow oder noch anders. Definiere mal 'Clone' für uns.

    Comment


    • #3
      Sollte schon deep sein, als das tatsächliche alle Eigenschaften rekursiv kopiert werden.

      Comment


      • #4
        Dann würde ich die Klasse serialisieren/deserialisieren. Z.B. so

        Code:
        public object Clone()
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(memoryStream, this);
                memoryStream.Position = 0;
                return binaryFormatter.Deserialize(memoryStream);
            }
        }

        Comment

        Working...
        X