zoukankan      html  css  js  c++  java
  • Serializable of an XPO Object

       public class SerializablePerson : XPObject {
         
    public SerializablePerson() { }
         
    public SerializablePerson(Session session) : base(session) { }
         
    public SerializablePerson(string name, int age) {
           
    this.name = name;
           
    this.age = age;
         }


         
    private string name;
         
    public string Name {
           
    get return name; }
           
    set { name = value; }
         }


         
    private int age;
         
    public int Age {
           
    get return age; }
           
    set { age = value; }
         }


         
    private SerializablePerson parent;
         [XmlIgnore] 
    // This would loop, and it's not needed
         [Association("Person-Children")]
         
    public SerializablePerson Parent {
           
    get return parent; }
           
    set { parent = value; }
         }


         [XmlIgnore] 
    // We'll serialize the helper instead
         [Association("Person-Children"), Aggregated]
         
    public XPCollection<SerializablePerson> Children {
           
    get return GetCollection<SerializablePerson>("Children"); }
         }


         AssociationXmlSerializationHelper childenSerializationHelper;
         [XmlArray(
    "Children")]
         [XmlArrayItem(
    typeof(SerializablePerson))] // extend this as necessary
         public AssociationXmlSerializationHelper ChildrenSerializationHelper {
           
    get {
             
    if (childenSerializationHelper == null)
               childenSerializationHelper 
    = new AssociationXmlSerializationHelper(Children);
             
    return childenSerializationHelper;
           }

         }

       }


       [TestFixture]
       
    public class Tests {
         [Test]
         
    public void Test( ) {
           XmlSerializer xmlSerializer 
    = new XmlSerializer(typeof(SerializablePerson));
           TextWriter textWriter 
    = new StringWriter( );

           SerializablePerson parent 
    = new SerializablePerson("Willy Webb"53);
           parent.Children.Add(
    new SerializablePerson("Billy Blab"14));

           xmlSerializer.Serialize(textWriter, parent);
           
    string str = textWriter.ToString( );

           Console.WriteLine(str);

           TextReader textReader 
    = new StringReader(str);
           SerializablePerson loadedParent 
    = (SerializablePerson) xmlSerializer.Deserialize(textReader);

           Assert.IsFalse(
    object.ReferenceEquals(parent, loadedParent));
           Assert.AreEqual(parent.Name, loadedParent.Name);
           Assert.AreEqual(parent.Age, loadedParent.Age);
           Assert.AreEqual(parent.Children.Count, loadedParent.Children.Count);
           Assert.AreEqual(parent.Children[
    0].Name, loadedParent.Children[0].Name);
           Assert.AreEqual(parent.Children[
    0].Age, loadedParent.Children[0].Age);
         }

       }


  • 相关阅读:
    JAVA第三周学习总结
    20175303 2018-2019-2 《Java程序设计》第2周学习总结
    20175310 MyCP(课下作业,必做)
    20175310 《Java程序设计》第8周学习总结
    2018-2019-2 20175310 实验二《Java面向对象程序设计》实验报告
    20175310 《Java程序设计》第7周学习总结
    结对编程项目-四则运算 整体总结博客
    20175310 《Java程序设计》第6周学习总结
    20175310结对编程项目-四则运算 阶段总结博客
    20175310 类定义
  • 原文地址:https://www.cnblogs.com/asyuras/p/701501.html
Copyright © 2011-2022 走看看