从 Silverlight 异步调用返回的对象会丢失其包含的聚合

发布于 2024-07-14 11:08:31 字数 1780 浏览 4 评论 0原文

从 Silverlight 2.0 控件到 WebService 的调用(通过 MyWebServiceNameEventArgs 返回)不会返回包含的 List<> 。 聚合体。 例如,我有一个包含 List 和 List 的 Person 类。 当我跟踪呼叫时,我发现此人的列表已正确填充。 但是,当它通过 MyWebServiceNameEventArgs 到达时,列表为空。 正确返回诸如 FirstName、DOB 等简单类型。

我需要做什么才能返回所附的聚合吗?

这是我的代码:

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

A call from a Silverlight 2.0 control to a WebService, returned via MyWebServiceNameEventArgs is not returning contained List<> aggregates. For Example, I've got a Person class that has a List and List. When I trace the call I see that the person has the lists are populated appropriately. However, when it arrives via the MyWebServiceNameEventArgs the lists are null. the simple types like FirstName, DOB etc are correctly returned.

Is there something I have to do to get the enclosed aggregates to be returned?

Here's my 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";
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

垂暮老矣 2024-07-21 11:08:31

愚蠢的错误,我忘记刷新 Silverlight 应用程序中的 ServiceReference。

Dumb error, I forgot to refresh the ServiceReference in the Silverlight app.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文