XSerializer generated classes

// interface file
using System.Collections.Generic;

namespace XSerializer.UnitTests.Sample
{
    /// <summary>
    /// Title
    /// </summary>
    public partial interface ITitle
    {
        /// <summary>
        /// Value
        /// </summary>
        string Value { get; set; }

        /// <summary>
        /// Language
        /// </summary>
        string Lang { get; set; }
    }

    /// <summary>
    /// Library
    /// </summary>
    public partial interface ILibrary
    {
        /// <summary>
        /// List of all Books
        /// </summary>
        IList<IBook> Books { get; set; }
    }

    /// <summary>
    /// Author
    /// </summary>
    public partial interface IAuthor
    {
        /// <summary>
        /// Name of the Author
        /// </summary>
        string Name { get; set; }

        /// <summary>
        /// Date
        /// </summary>
        string Born { get; set; }

        /// <summary>
        /// Date
        /// </summary>
        string Dead { get; set; }

        /// <summary>
        /// ID
        /// </summary>
        string Id { get; set; }
    }

    /// <summary>
    /// Book
    /// </summary>
    public partial interface IBook
    {
        /// <summary>
        /// ISBN
        /// </summary>
        int Isbn { get; set; }

        /// <summary>
        /// Title
        /// </summary>
        ITitle Title { get; set; }

        /// <summary>
        /// List of all Authors
        /// </summary>
        IList<IAuthor> Authors { get; set; }

        /// <summary>
        /// List of all Characters
        /// </summary>
        IList<ICharacter> Characters { get; set; }

        /// <summary>
        /// ID
        /// </summary>
        string Id { get; set; }

        /// <summary>
        /// Is available
        /// </summary>
        bool? Available { get; set; }
    }

    /// <summary>
    /// Character
    /// </summary>
    public partial interface ICharacter
    {
        /// <summary>
        /// Name
        /// </summary>
        string Name { get; set; }

        /// <summary>
        /// Date
        /// </summary>
        string Born { get; set; }

        /// <summary>
        /// Qualification
        /// </summary>
        string Qualification { get; set; }

        /// <summary>
        /// ID
        /// </summary>
        string Id { get; set; }
    }
}

// class file
using System.Collections.Generic;
using System.Collections.ObjectModel;
using XSerialization;

namespace XSerializer.UnitTests.Sample
{
    /// <summary>
    /// Title
    /// </summary>
    public partial class Title : BaseClass, ITitle
    {
        private string _value;
        private string _lang;

        /// <summary>
        /// Value
        /// </summary>
        [XBindingElement("", false, 0)]
        public string Value
        {
            get { return _value; }
            set
            {
                _value = value;
                RaisePropertyChanged("Value");
            }
        }

        /// <summary>
        /// Language
        /// </summary>
        [XBindingAttribute("lang", false, 100)]
        public string Lang
        {
            get { return _lang; }
            set
            {
                _lang = value;
                RaisePropertyChanged("Lang");
            }
        }

        /// <summary>
        /// Default constructor
        /// </summary>
        public Title()
        {
        }

        /// <summary>
        ///  Clean-up code for IDisposable
        /// </summary>
        /// <param name="disposing">If true only managed Code</param>
        protected override void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing) { }
                disposed = true;
            }
            // Call Dispose in the base class.
            base.Dispose(disposing);
        }
    }

    /// <summary>
    /// Library
    /// </summary>
    public partial class Library : BaseClass, ILibrary
    {
        private IList<IBook> _books;

        /// <summary>
        /// List of all Books
        /// </summary>
        [XBindingElement("book", true, 0, typeof(Book))]
        public IList<IBook> Books
        {
            get { return _books; }
            set
            {
                _books = value;
                RaisePropertyChanged("Books");
            }
        }

        /// <summary>
        /// Default constructor
        /// </summary>
        public Library()
        {
            _books = new ObservableCollection<IBook>();
        }

        /// <summary>
        ///  Clean-up code for IDisposable
        /// </summary>
        /// <param name="disposing">If true only managed Code</param>
        protected override void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing) { }
                disposed = true;
            }
            // Call Dispose in the base class.
            base.Dispose(disposing);
        }
    }

    /// <summary>
    /// Author
    /// </summary>
    public partial class Author : BaseClass, IAuthor
    {
        private string _name;
        private string _born;
        private string _dead;
        private string _id;

        /// <summary>
        /// Name of the Author
        /// </summary>
        [XBindingElement("name", true, 0)]
        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                RaisePropertyChanged("Name");
            }
        }

        /// <summary>
        /// Date
        /// </summary>
        [XBindingElement("born", true, 1)]
        public string Born
        {
            get { return _born; }
            set
            {
                _born = value;
                RaisePropertyChanged("Born");
            }
        }

        /// <summary>
        /// Date
        /// </summary>
        [XBindingElement("dead", false, 2)]
        public string Dead
        {
            get { return _dead; }
            set
            {
                _dead = value;
                RaisePropertyChanged("Dead");
            }
        }

        /// <summary>
        /// ID
        /// </summary>
        [XBindingAttribute("id", false, 100)]
        public string Id
        {
            get { return _id; }
            set
            {
                _id = value;
                RaisePropertyChanged("Id");
            }
        }

        /// <summary>
        /// Default constructor
        /// </summary>
        public Author()
        {
        }

        /// <summary>
        ///  Clean-up code for IDisposable
        /// </summary>
        /// <param name="disposing">If true only managed Code</param>
        protected override void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing) { }
                disposed = true;
            }
            // Call Dispose in the base class.
            base.Dispose(disposing);
        }
    }

    /// <summary>
    /// Book
    /// </summary>
    public partial class Book : BaseClass, IBook
    {
        private int _isbn;
        private ITitle _title;
        private IList<IAuthor> _authors;
        private IList<ICharacter> _characters;
        private string _id;
        private bool? _available;

        /// <summary>
        /// ISBN
        /// </summary>
        [XBindingElement("isbn", true, 0)]
        public int Isbn
        {
            get { return _isbn; }
            set
            {
                _isbn = value;
                RaisePropertyChanged("Isbn");
            }
        }

        /// <summary>
        /// Title
        /// </summary>
        [XBindingElement("title", true, 1, typeof(Title))]
        public ITitle Title
        {
            get { return _title; }
            set
            {
                _title = value;
                RaisePropertyChanged("Title");
            }
        }

        /// <summary>
        /// List of all Authors
        /// </summary>
        [XBindingElement("author", false, 2, typeof(Author))]
        public IList<IAuthor> Authors
        {
            get { return _authors; }
            set
            {
                _authors = value;
                RaisePropertyChanged("Authors");
            }
        }

        /// <summary>
        /// List of all Characters
        /// </summary>
        [XBindingElement("character", false, 3, typeof(Character))]
        public IList<ICharacter> Characters
        {
            get { return _characters; }
            set
            {
                _characters = value;
                RaisePropertyChanged("Characters");
            }
        }

        /// <summary>
        /// ID
        /// </summary>
        [XBindingAttribute("id", true, 100)]
        public string Id
        {
            get { return _id; }
            set
            {
                _id = value;
                RaisePropertyChanged("Id");
            }
        }

        /// <summary>
        /// Is available
        /// </summary>
        [XBindingAttribute("available", false, 101)]
        public bool? Available
        {
            get { return _available; }
            set
            {
                _available = value;
                RaisePropertyChanged("Available");
            }
        }

        /// <summary>
        /// Default constructor
        /// </summary>
        public Book()
        {
            _authors = new ObservableCollection<IAuthor>();
            _characters = new ObservableCollection<ICharacter>();
        }

        /// <summary>
        ///  Clean-up code for IDisposable
        /// </summary>
        /// <param name="disposing">If true only managed Code</param>
        protected override void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing) { }
                disposed = true;
            }
            // Call Dispose in the base class.
            base.Dispose(disposing);
        }
    }

    /// <summary>
    /// Character
    /// </summary>
    public partial class Character : BaseClass, ICharacter
    {
        private string _name;
        private string _born;
        private string _qualification;
        private string _id;

        /// <summary>
        /// Name
        /// </summary>
        [XBindingElement("name", true, 0)]
        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                RaisePropertyChanged("Name");
            }
        }

        /// <summary>
        /// Date
        /// </summary>
        [XBindingElement("born", true, 1)]
        public string Born
        {
            get { return _born; }
            set
            {
                _born = value;
                RaisePropertyChanged("Born");
            }
        }

        /// <summary>
        /// Qualification
        /// </summary>
        [XBindingElement("qualification", true, 2)]
        public string Qualification
        {
            get { return _qualification; }
            set
            {
                _qualification = value;
                RaisePropertyChanged("Qualification");
            }
        }

        /// <summary>
        /// ID
        /// </summary>
        [XBindingAttribute("id", false, 100)]
        public string Id
        {
            get { return _id; }
            set
            {
                _id = value;
                RaisePropertyChanged("Id");
            }
        }

        /// <summary>
        /// Default constructor
        /// </summary>
        public Character()
        {
        }

        /// <summary>
        ///  Clean-up code for IDisposable
        /// </summary>
        /// <param name="disposing">If true only managed Code</param>
        protected override void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing) { }
                disposed = true;
            }
            // Call Dispose in the base class.
            base.Dispose(disposing);
        }
    }
}

XmlSerializer generated classes

// class file
using System.Xml.Serialization;

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class library {
    
    private T_book[] bookField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("book", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public T_book[] book {
        get {
            return this.bookField;
        }
        set {
            this.bookField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class T_book {
    
    private string isbnField;
    
    private T_title titleField;
    
    private T_author[] authorField;
    
    private T_character[] characterField;
    
    private string idField;
    
    private bool availableField;
    
    private bool availableFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="integer")]
    public string isbn {
        get {
            return this.isbnField;
        }
        set {
            this.isbnField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public T_title title {
        get {
            return this.titleField;
        }
        set {
            this.titleField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("author", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public T_author[] author {
        get {
            return this.authorField;
        }
        set {
            this.authorField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("character", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public T_character[] character {
        get {
            return this.characterField;
        }
        set {
            this.characterField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string id {
        get {
            return this.idField;
        }
        set {
            this.idField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public bool available {
        get {
            return this.availableField;
        }
        set {
            this.availableField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool availableSpecified {
        get {
            return this.availableFieldSpecified;
        }
        set {
            this.availableFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class T_title {
    
    private string langField;
    
    private string valueField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string lang {
        get {
            return this.langField;
        }
        set {
            this.langField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlTextAttribute()]
    public string Value {
        get {
            return this.valueField;
        }
        set {
            this.valueField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class T_character {
    
    private string nameField;
    
    private string bornField;
    
    private string qualificationField;
    
    private string idField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string born {
        get {
            return this.bornField;
        }
        set {
            this.bornField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string qualification {
        get {
            return this.qualificationField;
        }
        set {
            this.qualificationField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string id {
        get {
            return this.idField;
        }
        set {
            this.idField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class T_author {
    
    private string nameField;
    
    private string bornField;
    
    private string deadField;
    
    private string idField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string born {
        get {
            return this.bornField;
        }
        set {
            this.bornField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string dead {
        get {
            return this.deadField;
        }
        set {
            this.deadField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string id {
        get {
            return this.idField;
        }
        set {
            this.idField = value;
        }
    }
}