1 messaggio dal 23 novembre 2011
Ciao a tutti, è la prima volta che intervengo in questo forum, ho cercato a lungo ma non riesco a trovare una soluzione a un problema abbastanza strano con silverlight e linq.

Ho un file xml con i dettagli di una rubrica di persone e numeri di telefono.

XDocument doc = XDocument.Load("Xml/PersonsData.xml");

      var query = doc.Descendants("person").
            Select<XElement, Person>(p => new Person()
                            {
                              Name = p.Attribute("name").Value,
                              Surname = p.Attribute("surname").Value,
                              Address = p.Attribute("address").Value,
                              PhoneNumber = p.Attribute("phone").Value,
                              Image = new BitmapImage(new Uri(_imageDataPath + p.Attribute("img").Value + ".jpg", UriKind.Relative)),
                              ImagePath = ""
                            }
                        );
      int aSimpleVariable = 110;

      this.DebugText.Text += aSimpleVariable.ToString() + "\n";


Questo codice funziona e infatti alla fine visualizza il numero 110 in una casella di testo.

Se però chiamo il metodo ToList<Person>() alla fine della query, oppure meglio: se eseguo un ciclo foreach su query per visualizzare le Persone, una volta uscito dal ciclo tutto il codice che è scritto dopo non funziona ecco qua un esempio
XDocument doc = XDocument.Load("Xml/PersonsData.xml");


var query = doc.Descendants("person").
      Select<XElement, Person>(p => new Person()
            {
              Name = p.Attribute("name").Value,
              Surname = p.Attribute("surname").Value,
              Address = p.Attribute("address").Value,
              PhoneNumber = p.Attribute("phone").Value,
              Image = new BitmapImage(new Uri(_imageDataPath + p.Attribute("img").Value + ".jpg", UriKind.Relative)),
              ImagePath = ""
            }
  
        );

int aSimpleVariable = 110;
foreach(var p in query)
{
  aSimpleVariable++;
  /* qui viene corettamente stampato 110, 111, 112 ecc... */
  this.DebugText.Text += aSimpleVariable.ToString() + "\n";
}

/* da qui in poi non funziona + nulla infatti la variabile non viene + stampata */
this.DebugText.Text += aSimpleVariable.ToString() + "\n";


Come mai questo comportamento con Silvelight?? il codice funziona correttamente per esempio in una Console Application!
Grazie
ciao a tutti
bisognerebbe debuggare, allega un file xml di esempio ;-)

MCTS: Silverlight 4, Development

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.