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

       }


  • 相关阅读:
    LINQ 学习路程 -- 查询操作 Join
    LINQ 学习路程 -- 查询操作 GroupBy ToLookUp
    LINQ 学习路程 -- 查询操作 ThenBy & ThenByDescending
    LINQ 学习路程 -- 查询操作 OrderBy & OrderByDescending
    LINQ 学习路程 -- 查询操作 OfType
    LINQ 学习路程 -- 查询操作 where
    动态切换数据库(EF框架)
    ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
    常用的Issue解决方案(EF框架)
    OpenFileDialog.Filter 属性
  • 原文地址:https://www.cnblogs.com/asyuras/p/701501.html
Copyright © 2011-2022 走看看