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);
         }

       }


  • 相关阅读:
    Process 'command '/Users/lidaqiang/Library/Android/sdk/build-tools/27.0.3/aapt'' finished with non-zero exit value 1
    合同诈骗无罪裁判要旨、判决理由及评析意见
    互换不同种类毒品行为如何认定
    正当防卫指导性案例以及研析
    期待可能性理论的司法适用
    共同犯罪认定方法
    刑事案件鉴定意见常用质证要点
    张明楷的100个刑法案例
    刑事律师办案必备126部法律
    正当防卫裁判要旨16条
  • 原文地址:https://www.cnblogs.com/asyuras/p/701501.html
Copyright © 2011-2022 走看看