using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;

namespace CLPersone
{
    public class Persona
    {
        string nome;

        public string Nome
        {
            get { return nome; }
            set { nome = value; }
        }

        string cognome;

        public string Cognome
        {
            get { return cognome; }
            set { cognome = value; }
        }





        // Proprietà, con il solo get accessor, di tipo XElement
        // Si crea un elemento XML strutturato in questo modo:


        //          <persona>
        //              <cognome>valore_cognome_dato_membro_classe</cognome> 
        //              <nome>valore_nome_dato_membro_classe</nome> 
        //          </persona>

        // Quando creo un XElement, devo assegnarli due cose:
        //  1) il nome  
        //  2) il valore

        // Il primo XElement che viene creato si chiama persona e come valore
        // (quello che sta scritto dopo la virgola) ha due XElement
        // Questa è la strategia per creare elementi xml nidificati, ossia figli di altri elementi XML

        // Il secondo XElement che viene creato si chiama cognome e come valore
        // (quello che sta scritto dopo la virgola) ha il valore del dato membro cognome
        // della classe Persona

        // Il terzo XElement che viene creato si chiama nome e come valore
        // (quello che sta scritto dopo la virgola) ha il valore del dato membro nome
        // della classe Persona
        public XElement XElement
        {
            get
            {
                return new XElement("persona",
                    new XElement("cognome", this.cognome),
                    new XElement("nome", this.nome));
            }
        }


        
        
        // Costruttore della classe Persona che mi permette di costruire 
        // una persona, noto l'XElement che la descrive


        public Persona(XElement XElement)
        {
            // Recupero il valore dell'elemento che si chiama "cognome" e lo assegno al dato
            // membro cognome della Persona
            cognome = XElement.Element("cognome").Value;

            // Recupero il valore dell'elemento che si chiama "nome" e lo assegno al dato
            // membro nome della Persona
            nome = XElement.Element("nome").Value;
        }


        public Persona()
        { }

    }
}
