ошибка: невозможно выполнить привязку во время выполнения (когда местоположение / родной город / какой-либо параметр не задан в профиле facebook) - PullRequest
9 голосов
/ 17 марта 2011

Я сталкиваюсь с ошибкой

Невозможно выполнить привязку во время выполнения для пустой ссылки

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Просмотрите трассировку стека для получения дополнительных сведений об ошибке и о том, где она возникла в коде.

Сведения об исключении: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Невозможно выполнить привязку во время выполнения для пустой ссылки

Ошибка источника:

Строка 27: lblBirthday.Text = (myInfo.birthday == null? String.Empty: DateTime.Parse (myInfo.birthday) .ToString ("dd-MMM-yy")));Строка 28: lblHometown.Text = (myInfo.hometown.name == null? String.Empty: myInfo.hometown.name); Строка 29: lblLocation.Text = (myInfo.location.name == null? String.Empty: myInfo.location.name); Строка 30: pnlHello.Visible = true;Строка 31:}

Вот мой код:

var fb = new FacebookWebClient();
    dynamic myInfo = fb.Get("me");
    lblName.Text = myInfo.name;
    imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
    lblBirthday.Text = (myInfo.birthday == null ? string.Empty : DateTime.Parse(myInfo.birthday).ToString("dd-MMM-yy"));
    lblHometown.Text = (myInfo.hometown.name == null ? string.Empty : myInfo.hometown.name);
    lblLocation.Text = (myInfo.location.name == null ? string.Empty : myInfo.location.name);
    pnlHello.Visible = true;

Ответы [ 2 ]

14 голосов
/ 17 марта 2011

Первая проверка на myInfo.location, равную нулю:

lblLocation.Text = myInfo.location == null ? "" : myInfo.location.name ?? "";

(И аналогично для аналогичных членов.)

Это немного болезненно, по общему признанию, но в основном вам нужно учитывать все, что может быть нулевым, чтобы убедиться, что вы не пытаетесь разыменовать его.

0 голосов
/ 17 марта 2011

Я изменил свой код как:

var fb = new FacebookWebClient();
dynamic myInfo = fb.Get("me");
lblName.Text = myInfo.name;
imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
lblBirthday.Text = (myInfo.birthday == null ? string.Empty : DateTime.Parse(myInfo.birthday).ToString("dd-MMM-yy"));
lblHometown.Text = (myInfo.hometown == null ? string.Empty : myInfo.hometown.name);
lblLocation.Text = (myInfo.location == null ? string.Empty : myInfo.location.name);
pnlHello.Visible = true;
...