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基础其他
    java网络编程
    java多线程编程
    正则表达式--位置匹配和组
    设计模式
    深入 Java Web
    mysql 好用的sql语句
    spring boot 发送邮件
    dubbo的spi机制
    原理分析dubbo分布式应用中使用zipkin做链路追踪
  • 原文地址:https://www.cnblogs.com/asyuras/p/701501.html
Copyright © 2011-2022 走看看