2009-02-27 8 views
1

Un appel d'un contrôle Silverlight 2.0 vers un service Web, renvoyé via MyWebServiceNameEventArgs, ne renvoie pas la liste <> agrégats. Par exemple, j'ai une classe Person qui a une liste et une liste. Quand je trace l'appel, je vois que la personne a les listes sont peuplées de manière appropriée. Cependant, quand il arrive via MyWebServiceNameEventArgs les listes sont nulles. les types simples comme FirstName, DOB etc sont correctement retournés.Les objets renvoyés par les appels asynchrones Silverlight perdent leurs agrégats contenus

Y a-t-il quelque chose que je dois faire pour récupérer les agrégats fermés?

Voici mon code:

private void btnGetPerson_Click(object sender, RoutedEventArgs e) 
{ 
    var proxy = new TutorWCFServicesClient(); 
    proxy.GetPersonWithPersonKeyOfCompleted += new EventHandler<GetPersonWithPersonKeyOfCompletedEventArgs>(proxy_GetPersonWithPersonKeyOfCompleted); 
    var perID = 29; // testing 
    proxy.GetPersonWithPersonKeyOfAsync(perID); 
} 

void proxy_GetPersonWithPersonKeyOfCompleted(object sender, GetPersonWithPersonKeyOfCompletedEventArgs e) 
{ 
    var per = e.Result; 
    if (per != null) 
    { 
    FirstName.Text = per.FirstName; 
    LastName.Text = per.LastName; 
    if (per.Phones != null) 
    { 
     var hPhone = (from phone in per.Phones where phone.PhoneType.ToLower() == "home" select phone).FirstOrDefault(); 
     var cPhone = (from phone in per.Phones where phone.PhoneType.ToLower() == "cell" select phone).FirstOrDefault(); 
     var wPhone = (from phone in per.Phones where phone.PhoneType.ToLower() == "work" select phone).FirstOrDefault(); 

     if (hPhone != null) 
     { 
     PhoneHome.Text = string.Format("({0}) {1}-{2}", hPhone.AreaCode, hPhone.Exchange, hPhone.Number); 
     } 
     if (cPhone != null) 
     { 
     PhoneCell.Text = string.Format("({0}) {1}-{2}", cPhone.AreaCode, cPhone.Exchange, cPhone.Number); 
     } 
     if (wPhone != null) 
     { 
     PhoneSchool.Text = string.Format("({0}) {1}-{2}", wPhone.AreaCode, wPhone.Exchange, wPhone.Number); 
     } 
    } 
    } 
    else 
    { 
    FirstName.Text = "Not Found"; 
    } 
} 

Répondre

1

erreur Dumb, j'ai oublié de rafraîchir la ServiceReference dans l'application Silverlight.

+0

J'ai été là, croyez-moi :-) et j'ai claqué la tête sur mon bureau en essayant de comprendre ce qui ne va pas. +1 –

Questions connexes